How to optimize the following perl code?
在下面的代码中,我尝试打印每一行及其行号。有没有其他方法可以使用 Perl 优化以下代码?
1 2 3 4 5 6 7 8 9
| #!/usr/bin/perl
use strict ;
use warnings ;
open my $fh,"<","exercise.csv";
while(<$fh>)
{
print"$.=====>$_";
}
close $fh; |
- 这取决于您所说的优化是什么意思。您可以通过使用某些语言功能使其更简洁。整个循环可以压缩成 print"$.=====>$_" while <$fh>; 并且你不必执行 close $fh 因为当 $fh 超出范围时它会自动关闭文件句柄。您应该包含 or die $! 以从您的 open 中捕获错误(理论上也包括您的 close,因为这可能会失败,但我们还是将其删除了)。但这确实是一个代码审查,应该进行代码审查,而不是在这里。
-
也许我们可以在带有变量插值的打印之间进行基准测试,如在发布的问题中,以及在带有变量连接的打印中,如在 print $ 中。 .\\'====>\\'.$_;
-
如果将输出重定向到文件而不是打印到终端,它可能会运行得更快,特别是如果它是一个大文件,因为终端不需要渲染所有内容.... perl my_script.pl > output
-
究竟是什么问题?您的程序运行速度是否太慢?是不是太占内存了?
没有。
当您进行优化时,您会考虑一些不太有效的实现目标的方法。这通常是算法,查看循环发生的位置是一个好的开始。
但是还有资源使用优化——磁盘 IO 通常是最昂贵的操作——但是你需要做所有你正在做的 IO,而且你没有做任何冗余 IO。
有时 - 系统调用或对其他二进制文件的"脱壳"(通过 system 或反引号)会产生开销。但你也不这样做。
基本上 - 您的代码还不够复杂,不会有任何明显的低效率。