控制perl脚本的CPU利用率?

Nil*_*h C 7 perl cpu-usage

我根据Perl脚本多次迭代的标准进行了大量的文件搜索,似乎占用了100%的CPU时间.有没有办法控制我的脚本CPU利用率?我读到了一些关于在我的脚本中放入空睡眠周期的地方.但我不知道该怎么做.

Alo*_*lon 10

你可以降低由OS:windowslinux分配的进程(Perl的)优先级

最低优先级的示例:

视窗

start /LOW  perl <myscript>
Run Code Online (Sandbox Code Playgroud)

Linux的

nice +19 perl <myscript>
Run Code Online (Sandbox Code Playgroud)


Gre*_*con 7

提高CPU利用率的一个好方法是使用更好的算法.不要猜测代码在哪里花费所有时间:使用分析器.Devel::NYTProf是一个很棒的工具.

一定要记住阿姆达尔的法律.例如,假设您的程序的一部分使用二次算法,并且您可以使用线性算法替换它.万岁!但是,如果所讨论的代码仅占总运行时间的5%,那么您最英勇的努力不会带来微不足道的5%改进.使用分析器确定在其他地方是否有更高速度的机会.

您没有告诉我们您要搜索的是什么,即使是最知名的算法也可能是CPU密集型的.考虑到您的操作系统的调度程序已经过编写,手动调整,测试和重写,以便有效地使用系统资源.是的,有些任务需要专门的调度程序,但这种情况很少见 - 甚至不太可能,因为你使用的是Perl.

不要把它看作是你的代码占用CPU的坏迹象.您可能会惊讶地发现,性能至关重要的实时系统中最难的挑战之一就是让CPU保持忙碌而不是空闲.


Chr*_*n V 5

你可以使用睡眠或睡眠.您可以做的另一件事是降低进程优先级.

更新:请参阅setpriority()