Jusqu'à présent, j'écrivais des programmes en Perl. J'ai décidé d'essayer Python et j'ai remarqué quelques différences. Alors que perl a ARGV, regex, etc, ils doivent être importés en python. Je pensais que cela donnerait un avantage de performance à python puisque vous ne chargez que ce dont vous avez réellement besoin. J'ai donc écrit un programme de démonstration dans chaque langue pour tester ses performances.Quel langage de script fonctionne mieux dans vs perl vs python vs ruby?
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
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;
}
Les résultats sont les suivants:
Perl
0m0.006s réel
utilisateur 0m0.002s
sys
Py thon
0m0.075s réel
utilisateur 0m0.061s
sys
Ruby
Les 0m0.017s réels
utilisateur de 0m0.008s
sys 0m0.008s
C
0m0.003s réel
utilisateur 0m0.001s
sys 0m0.002s
est mon test erroné d'une certaine façon?
J'ai lu que python est mieux adapté pour les grands programmes (See here). Est-ce que ça va surperformer Perl alors? Qu'en est-il de leur utilisation de la mémoire?Je suis en train d'écrire quelques grandes applications à exécuter en tant que démons sur mon VPS qui a une quantité limitée de RAM donc mon but réel est de minimiser l'utilisation de la mémoire.
500 entiers est à peine suffisant pour l'analyse comparative et que vous exécutez juste cette fois. Et d'une manière ou d'une autre, est-ce que cela vous importe vraiment? – user225312
Pourquoi les downvotes? – zoul
Parce que vous posez la mauvaise question. –