c/c++语言开发共享平均执行时间

有没有什么好的GNU方法如何测量某些命令行程序的平均(最坏情况,最佳情况)执行时间? 我有图像filter,未指定数量的图片,在bash中使用for循环过滤它们。 到目前为止,我正在使用时间 ,但我找不到如何获得一些统计数据的方法。

    有一个有趣的Perl程序叫做dumbbench ,它本质上是time命令的包装器。 它会多次运行您的程序,抛弃exception值,然后计算一些统计信息。

    作者有几篇文章( 这里和这里 )概述a)为什么基准测试很糟糕,以及b)你可以制作什么样的漂亮图表来使你的基准测试数据少一些。

    您可以将时间输出发送到某个文件,然后“处理”该文件

     echo "some info" >> timefile.txt time ( ./yourprog parm1 parm2 ) 2>> timefile.txt 

    随着time你走在正确的轨道上。 这是我用来执行小代码执行分析的方法。

    然后我使用python通过读取time输出来收集统计信息。 为了提高准确性,我通常会进行10到1000次试验,具体取决于每个过程需要多长时间。

    我不熟悉任何进行此类分析的预安装GNU应用程序。

     #!/bin/bash for i in {1..100} do env time --append -o time_output.txt ./test_program --arguments-to-test-program done exit 

    如果您发现{1..100}语法不适合您,那么您应该查看seq命令。

    我使用env time执行时间程序而不是shell的内置命令,它不接受时间程序所需的所有参数。 时间程序还会使用其他参数来更改其输出的格式,您可能希望使用该参数来使数据更容易由另一个程序处理。 -p( – portability)参数使其以POSIX格式输出(如BASH的内置时间),但使用-f选项可以获得更多控制。 man 1 time获取更多信息。

    收集数据后,一个简单的perl或python脚本可以轻松地解析和分析您的计时数据。

    您应该考虑是否对外循环进行计时并除以重复,而不是分别对每次迭代进行计时。 如果您担心丢弃高低,只需再做几次迭代就可以淹没它们。

     time for i in {1..1000} do something done 

    您可以在变量中捕获时间输出 :

     foo=$( { time { echo "stdout test message demo" for i in {1..30} do something done echo "stderr test message demo" >&2 } 1>&3 2>&4; } 2>&1 ) 

    并做一些假数学

     foo=${foo/.} # "divide" by ... echo "0.00${foo/#0}" # ... 1000 

    或者只是使用bc

     echo "scale=8; $foo/1000" | bc 

      以上就是c/c++开发分享平均执行时间相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560308.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐