$ cat prime.c #include <stdio.h> int main () { int n, x; for (n = 2; n <= 10000; n++) { for (x = 2; x < n; x++) if (n % x == 0) { printf ("%d = %d * %d\n", n, x, n/x); break; } if (x == n) printf ("%d is prime number\n", n); } return 0; } $ gcc prime.c $ time ./a.out >log-C 0.59user 0.00system 0:00.59elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (81major+10minor)pagefaults 0swaps $
$ cat prime.pl #!/usr/bin/perl for ($n = 2; $n <=10000; $n++) { for ($x = 2; $x < $n; $x++) { if (($n % $x) == 0) { print "$n = $x * ", $n/$x, "\n"; last; } } print "$n is prime number\n" if ($x == $n); } $ time ./prime.pl >log-Perl 17.26user 0.02system 0:17.56elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (265major+50minor)pagefaults 0swaps $ diff log-Perl log-C $
$ cat prime.py #!/usr/bin/env python for n in range (2, 10001): for x in range(2, n): if n % x == 0: print n, '=', x, '*', n/x break else: print n, 'is prime number' $ time ./prime.py >log-Python 36.85user 0.04system 0:37.45elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (316major+169minor)pagefaults 0swaps $ diff log-Python log-C $
$ cat prime.f program prime integer n, x do n = 2, 10000 do x = 2, n - 1 if (mod(n, x) .eq. 0) then print *, n, ' =', x, ' *', n/x goto 10 endif enddo 10 if (x .eq. n) print *, n, ' is prime number' enddo stop end $ g77 prime.f $ time ./a.out >log-Fortran 0.63user 0.00system 0:00.62elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (97major+13minor)pagefaults 0swaps $ cut -b 2- log-Fortran >tmp.log-Fortran $ diff tmp.log-Fortran log-C $
$ cat prime.rb #!/usr/bin/env ruby for n in 2..10000 for x in 2..n-1 if n % x == 0 print n, " = ", x, " * ", n/x, "\n" break end end if x == n - 1 print n, " is prime number\n" end end $ time ./prime.rb >log-Ruby 34.15user 0.02system 0:34.17elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (331major+172minor)pagefaults 0swaps $ diff log-Ruby log-C 0a1 > 2 is prime number $
$ cat ./prime.tcl #!/usr/bin/tclsh for {set n 2} {$n <= 10000} {incr n} { for {set x 2} {$x < $n} {incr x} { if {$n % $x == 0} { puts "$n = $x * [expr $n / $x]" break } } if {$x == $n} { puts "$n is prime number" } } $ time ./prime.tcl >log-Tcl 83.45user 0.13system 1:23.60elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (249major+56minor)pagefaults 0swaps $ diff log-Tcl log-C $
$ cat prime.bc #!/usr/bin/bc for (n = 2; n <= 10000; n++) { for (x = 2; x < n; x++) { if (n % x == 0) { print n, " = ", x, " * ", n/x, "\n" break } } if (x == n) print n, " is prime number\n" } quit $ time ./prime.bc >log-BC 141.52user 0.28system 2:24.90elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (150major+14minor)pagefaults 0swaps $ diff log-BC log-C $
language | AMD K6-2[350MHz] | Pentium III (Coppermine)[700MHz] | Genuine Intel T2300[1.66GHz] | ||||||
real(sec) | user(sec) | sys(sec) | real(sec) | user(sec) | sys(sec) | real(sec) | user(sec) | sys(sec) | |
C | 0.581 | 0.580 | 0.000 | 0.321 | 0.320 | 0.000 | 0.089 | 0.088 | 0.000 |
Fortran | 0.621 | 0.620 | 0.000 | 0.341 | 0.340 | 0.000 | 0.121 | 0.120 | 0.004 |
Perl | 19.875 | 19.600 | 0.020 | 9.190 | 8.960 | 0.010 | 3.280 | 3.112 | 0.004 |
Ruby | 38.417 | 38.150 | 0.050 | 12.515 | 12.440 | 0.000 | 9.721 | 7.540 | 2.180 |
Python | 39.396 | 39.150 | 0.050 | 14.874 | 14.670 | 0.010 | 4.596 | 4.588 | 0.008 |
Tcl | 84.730 | 83.880 | 0.170 | 30.764 | 30.460 | 0.080 | 14.787 | 14.677 | 0.076 |
bc | 139.686 | 139.330 | 0.230 | 63.100 | 60.970 | 0.480 | 17.164 | 16.905 | 0.148 |
language | Intel Core i7-4500@1.80GHz Cygwin 2014.10.31 |
||
real(sec) | user(sec) | sys(sec) | |
C | 0.062 | 0.031 | 0.000 |
Fortran | 0.062 | 0.031 | 0.000 |
Ruby | 0.594 | 0.515 | 0.046 |
Perl | 0.781 | 0.750 | 0.000 |
Python | 1.020 | 0.968 | 0.015 |
Tcl | 2.289 | 2.250 | 0.015 |
bc | 13.177 | 13.000 | 0.125 |