[C++]传递节点的索引还是节点本身更好?哪个更快?
[C++]It's better to pass the index of a node or the node itself? Which is faster?
哪种方法更快?这
int bfs( nodo& s ){....
还是这个?
int bfs( int index ){....
其中nodo是这个结构:
struct nodo{
int valore;
vector<int> vic;
vector<int> nodiEntranti;
vector<int> disprezzati;
vector<int> rivali;
int dt;
int ft;
bool visited;
nodo(){
visited=false;
valore= -1;
dt=0;
ft=0;
}
};
我有这样的结构:
vector<nodo> graph;
p.S:我需要调用这个函数20万次。
它可能不会有太大变化。
原因是您通过引用传递结构体,即传递结构体的内存地址,而不是整个结构体。这与向节点传递整数索引在性能上应该没有太大区别。
在std::vector对象上使用运算符[]是一个函数调用,因此,每次使用第一个版本的bsf(int index)
都会导致在函数内部调用运算符[]。如果您可以以某种方式缓存一个节点引用,并在多次调用bsf(node &)
时重用它,那么您可能会看到后者的性能略有提高。
这将取决于您对它所做的操作。如果您传递索引,则需要额外的(尽管很小)步骤来获取引用;但如果你需要访问它的邻居,拥有索引可以更快地访问。
一句话:正如@taocp所建议的那样,对其进行简介并亲自查看。
相关文章:
- C++:将控制台输出存储在宏中更好吗
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 初始化具有非默认构造函数的std::数组项的更好方法
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么新的随机库比std::rand()更好
- 寻找一种更好的方法来表示无符号字符数组
- 哪种方法更好,性能明智
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 什么是更好的做法?通过指针或标识符传递类成员?
- 寻求更好地理解标准::访问
- 线程消息传递或更好:在"大师班"中访问其他班级的成员
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 如何更好地检查两个 char 变量是否在一组值中?
- 有没有更好的方法对C++中的三个整数进行排序?
- 什么模板用法在阶乘中更好
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 我们应该如何使用枚举类进行索引(或者我们应该更好地避免这种情况)?
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 比使用 s.str().c_str() 更好的表达?
- [C++]传递节点的索引还是节点本身更好?哪个更快?