功能执行时间很奇怪

时间:2017-03-11 07:27:06

标签: c++ function callstack

我正在尝试评估链接列表中的循环与这两种情况中每个元素的操作之间的时间差异:

1)在函数内部进行操作

2)在同一个地方进行没有函数调用的操作

由于每次调用创建和销毁堆栈帧的操作系统开销,我期待函数调用的变化要花费很多,但我得到的结果正好相反。我不明白为什么。有人可以解释一下发生了什么吗?

这是我的计划:

dataList = []
line_count = 0
for line in lineList:
    line_count+= 5
    dataList.append(line)
    line_count += 5

这些是我的结果:

与功能的时差== 18100

没有功能的时差= 33700000

2 个答案:

答案 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)