C 代码基准统计-
正如我在上一个主题中所写的:我需要找到一种获得基准统计数据的方法,如平均值、平均值、标准差等。我如何使用我发布的那些方法来实现这一点?请注意,我使用了一种解决方案来按时间间隔对代码进行基准测试,而不是多次调用函数。有什么想法吗 我只想到一个,不知道它是否正确(伪代码): 对吗?平均值、标准差等呢?你的平均值看起来还可以 平均值(即平均值)为 标准偏差是方差的平方根:C 代码基准统计-,c,performance,benchmarking,C,Performance,Benchmarking,正如我在上一个主题中所写的:我需要找到一种获得基准统计数据的方法,如平均值、平均值、标准差等。我如何使用我发布的那些方法来实现这一点?请注意,我使用了一种解决方案来按时间间隔对代码进行基准测试,而不是多次调用函数。有什么想法吗 我只想到一个,不知道它是否正确(伪代码): 对吗?平均值、标准差等呢?你的平均值看起来还可以 平均值(即平均值)为 标准偏差是方差的平方根: sigma = sqrt( 1/N * sum( (x[i]-mean)^2 ) 谢谢关于代码还有其他建议吗?我可以在这里改进什
sigma = sqrt( 1/N * sum( (x[i]-mean)^2 )
谢谢关于代码还有其他建议吗?我可以在这里改进什么、改变什么等?@nullpointer:我会弹出一个关卡,问你的总体目标是什么?如果这与找到最快的算法有关,我就不太关心测量了。我更关心的是深入了解如何使程序更快。如果这是你的目标,那你就是。你会惊奇地发现,从所谓的最佳计划中可以削减多少脂肪。再次感谢你。我将阅读本主题,但我的目的不是找到最快的算法,而是衡量它的性能,仅此而已。我知道一个测试(一个函数调用)在基准测试中是没有意义的。我只是想知道我这样做是否正确,如果我能得到“可用”的测量结果。另外,我想问你,当函数调用的时间太“短”,单个调用在每次迭代中显示0.00000秒时,我应该怎么做?我可以这样做吗:,对吗?@nullpointer:我喜欢堆栈采样,但即使是
gprof
也应该告诉您包含的时间。从本质上讲,如果一个整体程序需要(比如)100秒,并且在该时间函数中,foo
出现在(比如)10%的堆栈样本上,那么它需要的总包含时间是100秒的10%,即10秒。如果你把它除以它被调用的次数,那就是每次调用的时间。如果它运行的时间太短,无法获取样本,只需围绕它进行大约1000次迭代的循环即可。各种分析器可以自动采集堆栈样本,如oprofile和。
mean = 1/N * sum( x[i] )
sigma = sqrt( 1/N * sum( (x[i]-mean)^2 )