Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 代码基准统计-_C_Performance_Benchmarking - Fatal编程技术网

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 )