2013-03-01 61 views
1

以下是一个示例代码文件,其名称为while.pl为什么perl编译的代码需要更多内存?

#!/usr/bin/perl 
use strict; 
use warnings; 
my $i=0; 
while (1) 
{ 
    print "Testing $i\n" ; 
    $i++ ; 
    sleep(1); 
} 

我以

perlcc -o compiled while.pl 

编译该代码然后我执行正常代码while.pl和编译代码compiled。 我观察到使用ps命令

ps axo %cpu,%mem,command | grep "while\|compiled" 

0.0 0.0 /usr/bin/perl ./while.pl 
0.0 0.1 ./compiled 

所以我的问题是内存和CPU使用率:

  • 为什么编译后的代码需要更多的内存相比,while.pl
  • 而我将如何避免编译的Perl代码的内存使用情况?
+2

仅使用* .pl文件,不是? – gaussblurinc 2013-03-01 19:49:28

+0

比较'/ proc/{pid}/maps'可能很有意思... – aschepler 2013-03-01 19:51:36

+0

我不明白,请你清楚解释一下 - @ loldop – RoCkStUnNeRs 2013-03-01 19:52:51

回答

3

Perl代码总是被编译。你在做的是事先编译它,而不是在运行时。

在运行时加载编译后的表单需要更多的内存,因为您正在加载正常加载的所有内容的编译形式加载器。