C++如何加快我的程序设计
C++ How to speed up my prog design
我正在尝试设计一个和弦系统。。
问题是,如果addPeer、removePeer等的大小为10-20行,我的系统可以正常工作。
但当我用大约5000行的命令文件测试它时。
最初的几百行很快,但随着程序加载越来越多的行,速度开始变慢。。
由于程序的要求是测试我的程序设计,我不能使用线程。
我听说指针是一种更快完成任务的好方法,但我该如何在我的案例中使用指针呢。
这是我的班主任。。
class chord
{
public:
chord();
~chord();
struct fingerTable {
int index;
int key;
};
struct node {
int nodeid;
vector<fingerTable> fTable;
vector<string> data;
};
void addPeer(int);
vector<node> cNode;
vector<fingerTable> fTable;
/* SOME more functions ..*/
};
这是我的addPeer函数
void chord::addPeer(int id)
{
//id = node ID
int fIndex,nextNode;
node newNode;
vector<fingerTable> ft1;
vector<string> data1;
//increment indexCounter
//indexCounter++;
newNode.nodeid = id;
//insert a blank fingerTable first.
newNode.fTable = ft1;
//insert a blank data first.
newNode.data = data1;
//push back node to vector chord Index Node
cNode.push_back(newNode);
//indexCounter++;
//perform finger table computation
//sort it base on its NodeID
sort(cNode.begin(),cNode.end(),sortByNodeID);
for(int i=0;i<cNode.size();i++)
{
if(cNode[i].nodeid==id)
{
fIndex=i;
}
}//end for loop to loop finding index of node
if(fIndex!=cNode.size()-1)
{
//if not last element
nextNode=fIndex+1;
}
else
{
nextNode=0;
}
//now we get the message vector of the next node and do a datashift on it.
data1 = cNode[nextNode].data;
//clear its data away so we can empty it and re-arrange it.
cNode[nextNode].data.clear();
//performing data shift function
dataShift(data1,fIndex-1);
if(id!=0)
{
cout << "PEER " << id << " inserted."<< endl;
}
}//end addPeer
我的问题是,我可以为这个函数addPeer即兴设置哪一部分,以使整个程序更快地执行行。因为它在执行几百行时会变得非常慢。
由于您不断地进行排序,所以速度会减慢。你应该问问。使用类似于CCD_ 1的排序结构。
更改容器。
通过使用std::vector
,您的算法将花费大部分时间将和弦复制到错误的位置。
如果你想对和弦进行排序,可以考虑使用std::set
而不是std::vector
。
相关文章:
- 询问在设计我的手臂模拟器功能表示格式1
- 钩子SSDT.其他驱动程序使用我的函数
- 如何在没有现有引擎的情况下在游戏中设计我的事件触发器框架?
- 程序在我的C++工作区中找不到头文件
- 为什么我的应用程序即使我的应用程序也关闭,即使我有cin.get();
- 为什么如果我启动几次程序,我的 md5 总是不同的
- 我的程序在我的计算机上运行,但在CodeEval上不起作用
- C++简单的程序 - 为什么我的"res"不进入我的向量?创建一个接受输入 (4+44-67+235) 并输出结果的程序
- Windows应用程序启动我的控制台
- 如何理解C++常见问题中的"程序忽略我的输入请求"?
- C++外部程序集:我的代码中的错误在哪里
- 我可以从我的程序启动我的 MSI 安装程序吗?
- 我正在做减法游戏(NIM)程序在我的一个练习中,它要求我在主循环周围进行另一个循环
- C 编译的程序在我的 Windows 10 中不起作用
- Linux:为什么加载程序找到我的共享库
- 我需要重新设计我的应用程序吗
- 我如何用程序检查我的电脑是否在代理后面
- C/ c++程序设计中的一个问题
- 我无法让多个小程序与我的 Cpp 服务器通信
- 如何在 Vista 和 Win7 上连接 FS 微筛选器驱动程序和我的应用程序?