RAW BENCHMARK DATA = Execution time (in seconds) ALGORITHM 1A # OCaml asm C C++ Haskell Java Scheme Forth 36 0.396 0.448 0.531 0.639 0.766 0.926 1.302 8.589 37 0.650 0.717 0.858 1.047 1.253 1.416 2.110 14.031 38 1.034 1.164 1.413 1.675 2.017 2.176 3.358 22.562 39 1.683 1.877 2.279 2.745 3.267 3.461 5.544 36.534 40 2.748 3.080 3.678 4.380 5.364 5.524 8.849 59.011 41 4.450 4.980 5.951 7.161 8.695 8.844 14.266 95.768 42 7.121 8.036 9.618 11.631 14.089 14.312 23.096 155.105 43 11.570 12.947 15.787 18.664 22.031 23.048 37.023 250.285 44 18.622 21.060 25.258 30.225 36.432 37.197 60.303 404.799 45 30.255 34.207 40.912 49.028 58.672 60.200 96.438 655.735 46 49.335 55.367 66.166 78.959 95.301 97.094 157.638 1061.84 # Joy PostScript AWK MUF perl J Hope Prolog Tcl sh 20 5.481 21 8.844 22 14.642 23 23.639 24 38.577 25 61.599 26 3.968 99.777 27 6.408 164.515 28 0.580 10.388 264.730 29 5.093 0.795 16.775 431.752 30 7.886 8.128 1.258 27.162 704.096 31 7.613 12.928 13.170 fail 43.829 1146.514 32 12.243 20.865 21.420 70.711 33 13.0 20.026 33.832 34.548 113.056 34 8.738 12.814 22.0 32.387 54.722 55.843 188.686 35 12.177 13.929 20.785 36.0 52.367 88.275 90.487 304.287 36 20.032 22.580 33.866 60.0 85.837 142.789 146.171 492.013 37 32.464 36.718 54.729 97.0 139.140 230.651 237.048 796.229 38 52.331 59.117 88.210 154.0 225.086 372.738 383.467 1289.078 39 84.859 95.618 142.104 248.0 344.316 597.089 619.236 40 137.690 154.905 228.569 390.0 586.111 961.543 1000.63 41 222.393 249.613 368.379 629.0 939.473 1554.29 42 358.052 405.392 595.840 997.0 1516.06 43 580.813 653.860 965.007 1595.0 44 944.483 1041.05 1566.02 45 1542.00 ALGORITHM 2A OCaml Haskell Scheme Java perl Prolog J 4000 1.501 fail 5000 0.710 1.956 0.833 0.988 6000 1.068 2.601 1.115 1.747 7000 1.426 2.340 1.390 2.707 8000 1.824 3.618 1.767 3.854 9000 2.469 4.403 2.124 5.284 10000 2.978 4.837 2.524 6.785 11000 3.607 5.278 2.991 8.683 12000 4.547 5.836 3.522 10.536 13000 5.160 6.284 4.031 12.462 14000 6.415 7.293 4.645 15.179 15000 7.393 8.693 5.264 17.559 20000 15.713 fail 8.722 32.758 25000 36.813 13.367 52.897 50000 0.454 0.909 fail 49.500 60000 0.710 1.338 70000 1.059 1.909 80000 1.493 2.468 90000 2.094 3.412 100000 2.887 4.195 110000 4.119 5.405 120000 5.803 6.607 130000 7.823 7.947 140000 10.139 9.088 150000 13.193 10.682 160000 16.824 12.696 ALGORITHM 2B: Simple Recursion OCaml Haskell Scheme perl Prolog Java J 10,000 0.012 0.016 0.043 2.656 0.072 0.380 fail 20,000 0.047 0.055 0.093 8.916 0.194 1.041 30,000 0.090 0.138 0.166 19.100 0.357 1.577 40,000 0.169 0.230 0.269 33.225 0.609 fail 50,000 0.248 0.367 0.411 49.839 0.713 100,000 0.973 1.310 1.520 fail fail 150,000 2.022 3.003 3.403 200,000 4.031 5.378 6.308 250,000 6.659 8.415 9.317 300,000 9.707 11.875 13.437 350,000 12.664 17.219 18.482 400,000 17.805 22.629 24.087 450,000 22.245 28.416 30.413 500,000 27.997 35.814 37.688 550,000 33.787 41.551 600,000 41.276 ALGORITHM 2C: LOOP OCaml Scheme Java J perl 10000 2.511 20000 8.627 30000 0.915 18.489 40000 1.538 32.046 50000 0.981 2.346 49.393 75000 0.927 2.006 5.048 100000 0.922 1.559 3.808 9.207 150000 2.045 3.552 8.328 21.007 200000 4.115 5.955 14.946 39.829 250000 6.357 9.699 23.255 300000 10.020 13.629 33.308 350000 13.341 18.168 45.225 400000 17.085 23.899 450000 21.723 30.484 500000 27.432 37.807 ALGORITHM 3B: Fast Recursion OCaml Haskell Scheme Java Prolog J perl 25,000 1.356 50,000 0.463 5.475 100,000 0.116 0.698 0.174 0.827 0.696 1.825 20.876 200,000 0.459 2.771 0.646 2.907 1.946 7.315 85.948 300,000 1.035 6.145 1.504 6.332 4.299 16.504 400,000 1.832 11.080 2.479 10.987 7.706 29.374 500,000 2.849 17.008 3.768 17.172 11.994 45.945 513.18 600,000 4.132 24.522 5.874 24.905 17.308 66.240 700,000 5.569 33.470 7.481 34.436 23.579 800,000 7.352 43.981 9.089 45.235 30.784 1,000,000 11.559 68.783 12.846 72.263 47.745 1,250,000 18.071 21.630 74.906 1,500,000 26.111 34.586 1,750,000 35.616 45.891 2,000,000 46.936 59.301 ALGORITHM 3A: Matrix Equation OCaml Haskell Scheme Java J Prolog perl 25,000 2.446 50,000 9.470 100,000 0.160 0.640 0.332 0.954 3.417 0.584 48.952 200,000 0.625 2.515 1.264 3.382 13.626 2.240 196.333 300,000 1.400 5.638 2.890 7.502 30.647 5.001 400,000 2.483 9.987 4.953 13.202 54.479 8.827 1242.66 500,000 4.082 15.578 7.714 20.655 85.133 13.780 600,000 5.578 22.678 11.452 29.825 19.839 800,000 9.907 40.287 19.683 53.466 35.180 1,000,000 16.534 61.970 30.299 85.499 341.696 54.966 1,250,000 24.154 49.278 85.941 1,500,000 34.857 69.535 ALGORITHM 3C: Binet's Formula none of the languages tested support arbitrary precision floating point numbers