Nowadays, there are three open code expression evaluators developed in Fortran available freely on the Internet. A brazilian one available at this site, an australian one, and a german one. Tests were made to analyze the performance of these three parsers and these tests consisted at the realization of five millions iterations for twenty-five different expressions, with the measurement of the time that each evaluator took to do such task. The tests were realized at a computer Intel Pentium III, 128 Mbytes of RAM memory and the compilation was done at the Compaq Visual Fortran (CVF) 6.5 using the option QuickWin Application. The elapsed time at the calculation of each expression properly compiled was also measured, so that would be possible to have a notion of how slow is a parser in Fortran comparing to the smallest time possible. The differentiation of the performance of the evaluators was done based only at the spent time for the tasks execution, because the numerical results of all were equivalent, and compatible with the numerical result of the compiled expression (10/01/2007).

Variables: x = 0.175, y = 0.110, z = 0.900, x1 = 0.508, x2 = 30.000, a = 0.900, b = 0.100, c = 0.110,
d = 0.120, e = 0.130, f = 0.140.

1) Function: a+b*x1
Final Result: 0.9508
Machine Time (s):
0.080
Developed Parser Time (LAB Fit) (s):
1.872
"Australian Parser" Time (Stuart Midgley) (s):
22.242
"German Parser" Time (Roland Schmehl) (s):
3.205

2) Function: (a*x**b)/(c+x**b)
Final Result:0.7958
Machine Time (s):
4.076
Developed Parser Time (LAB Fit) (s):
7.621
"Australian Parser" Time (Stuart Midgley) (s):
34.059
"German Parser" Time (Roland Schmehl) (s):
10.515

3) Function: (a*x)/(b+(x*(1+x/c)))
Final Result:0.2846
Machine Time (s):
0.391
Developed Parser Time (LAB Fit) (s):
4.767
"Australian Parser" Time (Stuart Midgley) (s):
33.848
"German Parser" Time (Roland Schmehl) (s):
8.0710

4) Function: a+b*exp(c*x)+d*exp(e*x)
Final Result:1.1247
Machine Time (s):
3.044
Developed Parser Time (LAB Fit) (s):
7.731
"Australian Parser" Time (Stuart Midgley) (s):
38.585
"German Parser" Time (Roland Schmehl) (s):
11.406

5) Function: a+b*(exp(c*x) - 1)/c
Final Result:0.9177
Machine Time (s):
1.733
Developed Parser Time (LAB Fit) (s):
5.568
"Australian Parser" Time (Stuart Midgley) (s):
34.680
"German Parser" Time (Roland Schmehl) (s):
8.912

6) Function: a+b*log(x)+c*log(x)**2
Final Result:1.0599
Machine Time (s):
2.683
Developed Parser Time (LAB Fit) (s):
8.272
"Australian Parser" Time (Stuart Midgley) (s):
37.434
"German Parser" Time (Roland Schmehl) (s):
11.927

7) Function: a-log(1+b*exp(-c*x))
Final Result:0.8064
Machine Time (s):
2.784
Developed Parser Time (LAB Fit) (s):
6.880
"Australian Parser" Time (Stuart Midgley) (s):
37.044
"German Parser" Time (Roland Schmehl) (s):
9.785

8) Function: (a+b*x)/(c+x)
Final Result:3.2193

Machine Time (s): 0.191
Developed Parser Time (LAB Fit) (s):3.024
"Australian Parser" Time (Stuart Midgley) (s):29.903
"German Parser" Time (Roland Schmehl) (s):5.548

9) Function: a+b*exp(-(c*x))
Final Result:0.9981
Machine Time (s):1.772
Developed Parser Time (LAB Fit) (s):4.647
"Australian Parser" Time (Stuart Midgley) (s):33.907
"German Parser" Time (Roland Schmehl) (s):7.101

10) Function: a+b*sin(2*3.14*x/c+d)
Final Result:0.8366
Machine Time (s):1.182

Developed Parser Time (LAB Fit) (s):5.728
"Australian Parser" Time (Stuart Midgley) (s):36.803
"German Parser" Time (Roland Schmehl) (s): 9.324

11) Function: a+b*sin(2*4.14*x/c+d)**2
Final Result:0.9441
Machine Time (s):2.394

Developed Parser Time (LAB Fit) (s):8.321
"Australian Parser" Time (Stuart Midgley) (s):40.458
"German Parser" Time (Roland Schmehl) (s):12.488

12) Function: 1-exp(-a*x)
Final Result:0.1457
Machine Time (s):1.773

Developed Parser Time (LAB Fit) (s):4.456
"Australian Parser" Time (Stuart Midgley) (s):29.542
"German Parser" Time (Roland Schmehl) (s): 6.088

13) Function: a+b*x1+c*x2
Final Result:4.2508
Machine Time (s):0.071

Developed Parser Time (LAB Fit) (s):2.934
"Australian Parser" Time (Stuart Midgley) (s):29.472
"German Parser" Time (Roland Schmehl) (s): 5.507

14) Function: a+b*log(x1)+c*log(x2)
Final Result:1.2064
Machine Time (s):1.813

Developed Parser Time (LAB Fit) (s):5.368
"Australian Parser" Time (Stuart Midgley) (s):34.169
"German Parser" Time (Roland Schmehl) (s): 8.352

15) Function:a*x1**b*x2**c
Final Result:1.2227
Machine Time (s):3.946

Developed Parser Time (LAB Fit) (s): 6.780
"Australian Parser" Time (Stuart Midgley) (s):32.157
"German Parser" Time (Roland Schmehl) (s): 9.323

16) Function: cosh(log(abs(y*z+x**2+x1**x2)))+a*d*(exp(c*f)+154.3)
Final Result:20.6961
Machine Time (s):
7.150
Developed Parser Time (LAB Fit) (s):17.114
"Australian Parser" Time (Stuart Midgley) (s):59.876
"German Parser" Time (Roland Schmehl) (s): 23.664

17) Function: a+b*log(x1)+c*x2+d*x2**2
Final Result:112.1323
Machine Time (s): 0.982

Developed Parser Time (LAB Fit) (s):8.202
"Australian Parser" Time (Stuart Midgley) (s):42.471
"German Parser" Time (Roland Schmehl) (s): 12.238

18) Function: atan(sinh(log(abs(exp(z/x)*sqrt(y+a**c+f*e)))))
Final Result:1.5597
Machine Time (s):
9.533
Developed Parser Time (LAB Fit) (s):15.573
"Australian Parser" Time (Stuart Midgley) (s):53.958
"German Parser" Time (Roland Schmehl) (s): 20.359

19) Function: atan(sinh(log(abs(exp(z/x)*sqrt(y+a**c+f*e)))))
Final Result:1.1006
Machine Time (s):0.621

Developed Parser Time (LAB Fit) (s):7.160
"Australian Parser" Time (Stuart Midgley) (s):39.246
"German Parser" Time (Roland Schmehl) (s): 11.276

20) Function: a+b/x1+c*log(x2)+d*log(x2)**2+e*log(x2)**3
Final Result:7.9741
Machine Time (s):5.458
Developed Parser Time (LAB Fit) (s):14.380
"Australian Parser" Time (Stuart Midgley) (s):54.448
"German Parser" Time (Roland Schmehl) (s): 20.680

21) Function: atan(sinh(log(abs(exp(z/x)*sqrt(y+a**c+f*e)))))*cos(log(abs(sqrt(y+a**c+f*e))))
Final Result:1.557368
Machine Time (s):14.258

Developed Parser Time (LAB Fit) (s):24.518
"Australian Parser" Time (Stuart Midgley) (s):76.528
"German Parser" Time (Roland Schmehl) (s): 32.915

22) Function: a+b*log(x1)+c*log(x1)**2+d/x2+e/x2**2
Final Result:0.8869
Machine Time (s):3.034
Developed Parser Time (LAB Fit) (s):13.550
"Australian Parser" Time (Stuart Midgley) (s):52.917
"German Parser" Time (Roland Schmehl) (s): 19.638

23) Function: (x+a)/(b+c*(x+a)+d*(x+a)**2)
Final Result:3.0118
Machine Time (s):0.220
Developed Parser Time (LAB Fit) (s): 8.312
"Australian Parser" Time (Stuart Midgley) (s):45.255
"German Parser" Time (Roland Schmehl) (s):12.989

24) Function: (x+y+z+x*y+x*z+y*z+x/y+x/z+y/z+x*cos(x)+y*sin(y)+z*tan(z)*2/(x+y+z+x*y+
x*z+y*z+x/y+x/z+y/z+x*cos(x)+y*sin(y)+z*tan(z))*3+sqrt(x*y*z+x+y+z)*log10(sqrt(x*2+y*2+z*2)+x+y+z))
Final Result:5.4819
Machine Time (s):9.644
Developed Parser Time (LAB Fit) (s): 48.119
"Australian Parser" Time (Stuart Midgley) (s):178.060
"German Parser" Time (Roland Schmehl) (s): 77.681

25) Function: a+b*log(x1)+c*log(x1)**2+d*log(x1)**3+e/x
Final Result:0.8498
Machine Time (s): 5.448
Developed Parser Time (LAB Fit) (s):15.122
"Australian Parser" Time (Stuart Midgley) (s):55.259
"German Parser" Time (Roland Schmehl) (s):
21.361


                                       |
Back |