Linuxで自由に使えるプログラミング言語のほんの一部
C(gcc-2.91.66[egcs-1.1.2]),Perl(5.005_03), Python(1.5.2), Fortan(GNU Fortran 0.5.24), Ruby(1.6.2), Tcl(8.0.5jp9), bc(1.05)

2から10000までの数が素数かどうか、ばか正直に順に確認していくプログラム
$ 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

-Home-
inserted by FC2 system