假设缓冲区是由若干成员组成的结构,包括一个数组。分配或传递缓冲区?
使用通常的优化标志进行编译,应该期望运行这两个代码片段会带来怎样的性能差异?
buffer buf;
for (int i = 0; i < BIG_ENOUGH_NUMBER; i++) {
init(huge_file, i, &buf);
}
// buf is not used afterward
...
void init(FILE* f, int i, buffer* b) {
... // b is filled using f, according to i
do_something(b);
}
VS
for (int i = 0; i < BIG_ENOUGH_NUMBER; i++) {
init(huge_file, i);
}
...
void init(FILE* f, int i) {
buffer buf;
... // buf is filled from scratch using f, according to i
do_something(&buf);
}
每个迭代中保留或重建'buf'中的多少数据/状态? – sarnold 2012-04-25 22:59:53
第二个例子没有声明b?这应该是buf吗? – TJD 2012-04-25 23:00:04
更正完成。 – Rhangaun 2012-04-25 23:01:39