到目前为止,我一直在用Perl编写程序。我决定尝试一下python,发现了一些不同之处。虽然perl内置了ARGV、regex等,但必须用python导入它们。
我认为这给了python一个性能优势,因为您只需要加载真正需要的内容。
所以,我用每种语言编写了一个演示程序来测试它的性能。
Perl#!/usr/bin/perl
exit(1) if $ARGV[-1] ne 'test';
print "Testing...\n";
my $a = 1.0;
my $i;
for (0 .. 500) { $a+=$a/100; }
printf "Result: %.5f\n", $a;
Python#!/usr/bin/python
from sys import argv
if argv[-1] != 'test':
exit(1)
print 'Testing...'
a = 1.0
for i in range(0, 501):
a+=a/100
print 'Result: %.5f' %a
红宝石#!/usr/bin/ruby
if ARGV[0] != "test"
exit(1)
end
print "Testing...\n"
a = 1.0
(0..500).each do a+=a/100 end
printf "Result: %.5f", a
C#include
#include
int main (int argc, char *argv[]) {
if (strcmp(argv[1], "test") != 0) return(1);
printf("Testing...\n");
double a = 1.0;
int i;
for (i=0; i <= 500; i++)
a+=a/100;
printf("Result: %.5f\n",a);
return 0;
}
结果是:
Perlreal 0m0.006s
user 0m0.002s
sys 0m0.004s
Pythonreal 0m0.075s
user 0m0.061s
sys 0m0.013s
红宝石real 0m0.017s
user 0m0.008s
sys 0m0.008s
Creal 0m0.003s
user 0m0.001s
sys 0m0.002s
我的测试在某些方面有缺陷吗?
我读过python更适合大型程序(See here)。那么它的性能会超过perl吗?他们的内存使用情况如何?
我正在写一些大型应用程序作为守护进程在我的VPS上运行,它的RAM数量有限,所以我的真正目标是最小化内存使用。