哪个脚本语言在vs perl vs python vs ruby​​中表现更好?

per*_*lit 7 c ruby python perl

到现在为止,我一直在用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;
Run Code Online (Sandbox Code Playgroud)

蟒蛇

#!/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
Run Code Online (Sandbox Code Playgroud)

红宝石

#!/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
Run Code Online (Sandbox Code Playgroud)

C

#include <stdio.h>
#include <string.h>

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;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

Perl

实际0m0.006s
用户0m0.002s
sys 0m0.004s

蟒蛇

实际0m0.075s
用户0m0.061s
sys 0m0.013s

红宝石

实际0m0.017s
用户0m0.008s
sys 0m0.008s

C

实际0m0.003s
用户0m0.001s
sys 0m0.002s

我的测试在某种程度上有缺陷吗?

我已经读过python更适合大型程序(见这里).那么它会超越perl吗?他们的内存使用情况如何?

我正在编写一些大型应用程序作为守护进程在我的VPS上运行,它具有有限的RAM,所以我的真正目标是最小化内存使用.

Dig*_*oss 6

有几个问题......

  1. 您的测试没有累积足够的运行时间,您可能主要测试解释器的启动开销,甚至不能非常准确地测量.

  2. 我不在乎Perl或Python是否比Ruby快10倍,我想使用我认为最好的语言...我最有动力写的那个......我认为它可以写出漂亮的代码.

  3. 这篇文章很老,当然不包括Ruby.

  • 当然,在Python甚至Perl中编写"漂亮"(尽管有多么无意义)代码是非常有可能的(并且很容易).一个优秀的程序员总能找到一种方法. (5认同)

BnW*_*and 0

不,这就是我期望看到这些语言的相对性能的地方。

更彻底的面向对象语言,如 Python 和 Ruby,本质上速度较慢,尤其是这两种语言,因为它们是解释性的。(好的python可以编译,但是还是慢)

Python 被认为更适合大型程序的原因是,随着复杂性的增加,它更容易组织。要保持大量相互关联的 Perl 脚本的可管理性需要非常严格。尤其是当两周后你还无法阅读它们时。=o)

在大多数情况下,程序员的时间与 CPU 时间一样重要。

  • @perlit:天真的编写的 perl 可能比以低内存使用为目标编写的 perl 占用更多的内存。也就是说,100Mb 虚拟内存并不意味着 100Mb RAM... (4认同)