Polynom
Ce comparatif de performances calcule 500000 fois un polynôme de 100 termes. Il est répété dix fois.
Resultats
La durée de l'éxécution est la durée utilisateur ajoutée à celle du système, comme renvoyée par la commande bash "time".
|
Python
|
Perl
|
Gambas
|
Durée d'éxécution
|
133 s
|
319 s
|
100 s
|
Par rapport à Python
|
100 %
|
239 %
|
75 %
|
Par rapport à Perl
|
42 %
|
100 %
|
31 %
|
Par rapport à Gambas
|
133 %
|
318 %
|
100 %
|
code source Python
#!/usr/bin/python
n = 500000
x = 0.2
def t(x):
mu = 10.0
pu = 0.0
pol = [0] * 100
r = range(0,100)
for i in range(0,n):
for j in r:
pol[j] = mu = (mu + 2.0) / 2.0
su = 0.0
for j in r:
su = x * su + pol[j]
pu = pu + su
return pu
for i in range(0,10):
print t(x)
code source Perl
#!/usr/bin/perl -w
use strict;
sub poly($)
\{
my $n = 500000;
my $x = $_[0];
my $mu = 10;
my $pu = 0;
my @pol;
foreach (0 .. $n - 1) {
foreach (0 .. 99) {
$pol[$_] = $mu = ($mu + 2) / 2;
}
my $s = 0;
foreach (0 .. 99) {
$s = $x * $s + $pol[$_];
}
$pu += $s;
}
return $pu;
}
my $res;
for (1..10) {
$res = poly(0.2);
print "$res\n";
}
code source Gambas
#!/usr/bin/env gbs3
Sub Test(X As Float) As Float
Dim Mu As Float = 10.0
Dim Pu, Su As Float
Dim I, J, N As Integer
Dim aPoly As New Float[100]
N = 500000
For I = 0 To N - 1
For J = 0 To 99
Mu = (Mu + 2.0) / 2.0
aPoly[J] = Mu
Next
Su = 0.0
For J = 0 To 99
Su = X * Su + aPoly[J]
Next
Pu += Su
Next
Return Pu
End
Dim I as Integer
For I = 1 To 10
Print Test(0.2)
Next