CPU주기를 낭비하고 있습니까?
Perl입니다. VM에서 실행됩니다. 포인터가 역 참조 전역 변수의 간단한 조회가 함축하는 의미가 있습니까? 왜 주기를 걱정 하시겠습니까??/s
<>
연산자는 상당한 양의 마법을 암시하지만 루프를 최적화하지는 않습니다. 따라서,
my $lastfile = "";
while (<>) {
say "file changed to ", $lastfile = $ARGV if $lastfile ne $ARGV;
print "> $_";
}
ne
체크는 모든 단일 라인에 대해 실행됩니다. 코드 크기 또는 개발 시간을 최적화하는 경우 이는 전적으로 허용됩니다. 나는 개인적으로 (단일 지정 양식) 더 우아한 수 있도록이 양식을 찾을 수
use autodie;
for my $file (@ARGV) {
open my $fh, "<", $file;
say "file changed to $file";
while (<$fh>) {
print "> $_";
}
}
, 그것은 : 당신이 실행 오피 코드의 총 수를 최적화하는 경우, 때로는 명시 적으로 파일의 개방을 싸게 할 수있다 어쨌든 그렇게 오래 걸리지 않습니다. 그러나 신속한 oneliner에서, 나는 더 긴 형식을 작성하는 동안 스크립트가 이미 1000 번 실행되었을 수 있으므로 첫 번째 솔루션을 사용합니다.
'$ ARGV '를 테스트하는 것보다'eof'를 사용하는 것이 더 좋습니다. 'perldoc -f eof'를보십시오 : http://perldoc.perl.org/functions/eof.html – shawnhcorey