Home > doc > benchmark > polynom 
 fr de es it nl pl pt pt_BR mk sq ca hu cs tr ar fa id vi ko ja ru zh zh_TW eo
Previous  Next  Edit  Rename  Undo  Refresh  Search  Administration  
Documentation
History
 
Polynom
This benchmark computes a 100-term polynom 500000 times. It is repeated ten times.

Results

The execution time is the user time added to the system time, as returned by the bash "time" command.

Python Perl Gambas Gambas + JIT
Execution time (s) 133 319 100 9.2
vs. Python 1 2.39 0.75 0.07
vs. Perl 0.42 1 0.31 0.03
vs. Gambas 1.33 3.18 1 0.09
vs. Gambas + JIT 14.46 34.67 10.87 1

Python source code

#!/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)

Perl source code

#!/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";
    }

Gambas source code

#!/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