Do tej pory pisałem programy w Perlu. Postanowiłem dać Pythonowi szansę i zauważyłem kilka różnic. Podczas gdy perl ma wbudowane ARGV, regex itp., Muszą one zostać zaimportowane w pythonie. Pomyślałem, że to daje Pythonowi przewagę wydajności, ponieważ ładujesz tylko to, czego naprawdę potrzebujesz.Który język skryptowy działa lepiej w porównaniu z vs perl vs python vs ruby?
Tak więc napisałem program demonstracyjny w każdym języku, aby przetestować jego działanie.
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;
Pythona
#!/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
Ruby
#!/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 <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;
}
Wyniki są następujące:
Perl
prawdziwe 0m0.006s
użytkownik 0m0.002s
SYS 0m0.004s
Py Thon
prawdziwe 0m0.075s
użytkownik 0m0.061s
SYS 0m0.013s
Ruby
prawdziwe 0m0.017s
0m0.008s użytkowników
sys 0m0.008s
C
prawdziwe 0m0.003s
użytkownik 0m0.001s
sys 0m0.002s
Czy moje testy wadliwy w jakiś sposób?
Przeczytałem, że python lepiej nadaje się do dużych programów (See here). Czy to będzie lepsze od Perla? A co z ich wykorzystaniem pamięci?
Piszę kilka dużych aplikacji do uruchomienia jako demony na moim VPS, który ma ograniczoną ilość pamięci RAM, więc moim prawdziwym celem jest zminimalizowanie zużycia pamięci.
500 całkowitymi wystarczy ledwie benchmarkingu i po prostu uruchomić ten jeden raz. A tak czy inaczej, czy to naprawdę ma dla ciebie znaczenie? – user225312
Dlaczego spadki? – zoul
Ponieważ zadajesz niewłaściwe pytanie. –