我正在尝试评估链接列表中的循环与这两种情况中每个元素的操作之间的时间差异:
1)在函数内部进行操作
2)在同一个地方进行没有函数调用的操作
由于每次调用创建和销毁堆栈帧的操作系统开销,我期待函数调用的变化要花费很多,但我得到的结果正好相反。我不明白为什么。有人可以解释一下发生了什么吗?
这是我的计划:
dataList = []
line_count = 0
for line in lineList:
line_count+= 5
dataList.append(line)
line_count += 5
这些是我的结果:
与功能的时差== 18100
没有功能的时差= 33700000
答案 0 :(得分:3)
第一个区别:
在该功能中,您将var
的值与"abc"
进行比较
在非函数调用代码中,您要将var
的值与"ram"
进行比较。
第二个区别,最重要的一个:
在第一种情况下,您使用的是std::chrono::microseconds
在第二种情况下,您使用的是std::chrono::nanoseconds
修正这些错误后,第二个数字的值始终低于第一个。
答案 1 :(得分:0)
您以不同的单位衡量时间:std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin)
与std::chrono::duration_cast<std::chrono::microseconds>(end - begin)
。