- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设计一个和弦系统..
问题是如果大小是 10-20 行 addPeer、removePeer 等,我的系统工作正常。
但是当我使用大约 5000 行命令文件对其进行测试时。
前几百行相当快,但随着程序加载越来越多的行,它开始变慢..
由于程序的要求是测试我的程序设计,我不能使用线程。
我听说指针是更快完成工作的好方法,但我如何在我的案例中使用指针。
这是我的类(class)标题..
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 即兴创作哪一部分以使整个程序更快地执行这些行。因为当执行几百行时它变得非常慢。
最佳答案
这正在减慢,因为您一直在排序。你应该概率。使用像 std::map<int,node>
这样的排序结构.
关于C++ 如何加速我的程序设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913263/
如何有效地设计一个C++模块化程序?如何学习? 最佳答案 对于初学者,您可能希望采取“暴力”过程: 1. 在一个文件中写一个简单的main函数。 2. 增加一些功能,先编译再测试。 3.重构(在谷歌中
前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能i
我正处于 Web 应用程序的设计阶段,该应用程序允许用户创建工作请求,并且工作人员可以针对这些请求投入时间。该应用程序还将为主管提供报告功能,以获取每日总计、报告,并说明花费的时间、“成本分配”。 我
前言:很多刚刚接触编程的人都不知道怎么下手编写程序,特别是学习了新的知识点,不知道有什么用,那么本文将以简单的存储结构及简单的运算,条件语句,分支语句,循环语句结合,带来一个双人对战版五子棋,这是一
我正在尝试通过 C++ 多线程解决网络流量问题。 给定一个网络(所有节点都由弧连接,每个弧连接2个且只有2个结束节点,一个是输入节点,另一个是输出节点,每个节点可以有多个输入弧和输出弧),每个节点需要
我有一个关于编程和文件的问题。 while(current!=NULL) { if(current->Id_Doctor!='\0') { current=current->next;
下面的‘C’语句执行什么操作? star = star ^ 0b00100100; (A) 切换变星的第 2 位和第 5 位。 (B) 清除变量星的第 2 位和第 5 位以外的所有位。 (C) 设置除
我写了下面的代码: #include int main() { int a, b; printf("Enter values of a and b\n"); scanf(" %d%d "
我正在将 C 代码编程到 PIC 板上。我的问题是如何让我的程序计算按下按钮(RB0)的时间。然后它会显示所花费的时间并将其显示在液晶显示屏上。以毫秒为单位计算。下面是到目前为止我的代码。 /
我是一名优秀的程序员,十分优秀!