测试单个命令或函数的 CPU 强度

测试单个命令或函数的 CPU 强度

是否有一个命令可用于对单独的命令或函数进行基准测试;看看它的cpu密集程度如何?

最好类似于如何使用 报告命令的持续时间time

例如:我尝试了以下代码;添加之前sleep 0.1;它对 CPU 造成压力,风扇高速运转,等等。sleep 0.1在每项之后添加printf似乎可以缓解问题。基本上,我只是想看看其中的区别:

spin ()
{
    i=0 
    sp='/-\|' 
    n=${#sp} 
    printf ' ' 
    sleep 0.1
    while true; do 
        printf '\b%s' "${sp:i++%n:1}" 
        sleep 0.1
    done
}

来源:http://mywiki.wookedge.org/BashFAQ/034

答案1

time给你信息!它告诉您程序作为用户(即 CPU 使用率)与系统(即输入/输出)花费了多少时间。 CPU 密集型程序是一种用户时间占主导地位而系统时间可以忽略不计的程序。

答案2

似乎有一场狂欢内置/关键词 time 一个单独的应用程序,/usr/bin/time。看起来前者优先,所以后者需要完整路径。

(显然这在过去已经被报道过很多次了,但这是我第一次遇到它)。

基本功能是相同的,但后者可以提供有关 CPU 使用情况的附加信息等(特别是使用-v/--verbose标志)。

虽然前者将接受函数作为操作数,但后者不会;除非它是在脚本的上下文中解析的。所以,这有点烦人,而且有点不便,但唯一的解决方案似乎是创建一个新脚本;声明一个新函数并调用它,保存它,然后:

/usr/bin/time -v ./newfunction.sh

谢谢大家抽出时间来写信。

相关内容