The Computer Language
25.01 Benchmarks Game

C gcc versus Free Pascal fastest performance

How the programs are written matters! Always look at the source code.

If the fastest programs are * hand-written vector instructions, does the host language matter? You might be more interested in the less optimised programs — more seconds, less gz source code.

fannkuch-redux
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
* C gcc #6 2.14 2,712 1582 8.436
* C gcc #4 14.05 2,351 1190 14.057
C gcc #5 7.28 2,949 917 28.32—28.45
C gcc #3 36.84 2,343 574 36.84—36.89
C gcc #8 39.34 2,343 483 39.52—40.22
C gcc 39.65 2,343 514 39.64—40.07
* C gcc #2 10.18 2,695 1563 39.98—40.15
Free Pascal 10.66 3,666 1057 42.368
n-body
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
* C gcc #9 2.10 2,482 1639 2.103
* C gcc #4 4.06 2,499 1398 4.061
C gcc #6 4.98 2,482 1186 4.985
C gcc #2 5.20 2,490 1270 5.204
C gcc 5.23 2,486 1179 5.234
C gcc #3 5.24 2,482 1214 5.244
* C gcc #5 5.44 2,494 1436 5.440
C gcc #8 5.54 2,486 1195 5.537
Free Pascal #2 6.31 586 1345 6.317
Free Pascal 6.32 582 1331 6.316
C gcc #7 6.89 2,490 1250 6.896
Free Pascal #3 7.20 590 1441 7.199
spectral-norm
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
* C gcc #6 0.40 3,199 1203 1.602
* C gcc #5 0.72 3,858 576 2.855
* C gcc #7 0.72 4,067 906 2.856
* C gcc #4 0.72 3,719 1145 2.859
C gcc #8 5.41 3,219 389 5.406
C gcc #3 1.43 4,080 470 5.710
Free Pascal #3 1.46 3,879 656 5.719
Free Pascal #2 1.46 3,793 548 5.720
Free Pascal 11.81 532 429 11.815
* C gcc #2   Empty  
mandelbrot
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
* C gcc #6 1.29 35,578 1147 5.110
C gcc #5 1.64 35,582 788 6.321
* C gcc #4 3.50 35,197 805 13.909
* C gcc #7 3.51 35,447 1000 13.943
* C gcc 3.50 35,017 828 13.938
* C gcc #3 3.55 34,873 769 14.124
Free Pascal #5 3.91 35,529 980 15.526
C gcc #9 4.07 35,394 700 15.721
C gcc #8 25.17 2,355 412 25.175
Free Pascal #7 6.61 39,596 956 26.28—26.50
Free Pascal #3 26.61 319 533 26.607
Free Pascal 11.06 35,152 853 29.636
Free Pascal #2 11.07 35,160 853 29.632
Free Pascal #6 7.47 38,654 809 29.88—30.07
fasta
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
C gcc #5 1.24 2,154 1286 1.249
C gcc #2 2.77 2,204 1299 2.770
C gcc #6 0.95 3,748 1936 2.77—2.81
C gcc #7 0.83 4,514 2276 3.283
C gcc 3.71 2,421 1213 3.712
Free Pascal #6 5.62 324 1196 5.615
Free Pascal #5 5.67 324 1225 5.670
C gcc #8 8.27 2,195 839 8.31—8.37
C gcc #3   Empty  
C gcc #4   Empty  
k-nucleotide
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
C gcc 3.58 135,234 1512 12.06—12.40
reverse-complement
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
* C gcc #7 0.44 514,208 1899 0.621
C gcc #9 0.49 514,159 1551 0.777
C gcc #6 0.97 693,969 828 1.371
C gcc #5 1.54 1,020,662 654 1.537
C gcc #2 1.07 1,021,755 757 1.592
* C gcc #4 3.70 514,077 716 3.711
Free Pascal #2 3.83 538,989 773 3.838
binary-trees
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
C gcc #2 1.56 174,780 816 4.30—4.45
C gcc #3 1.96 138,711 842 4.79—4.93
Free Pascal #5 2.12 136,892 959 5.062
Free Pascal #6 2.12 136,897 967 5.061
Free Pascal #7 2.17 136,897 1010 5.159
C gcc #8 20.77 293,605 607 20.88—21.13
C gcc 21.21 272,065 660 21.39—21.70
C gcc #5 8.71 361,587 914 31.85—32.27
pidigits
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
C gcc #2 0.74 4,006 422 0.737
* Free Pascal #3 0.75 3,195 536 0.741
C gcc 0.75 3,727 459 0.746
* Free Pascal #2 4.49 3,437 834 4.489
Free Pascal 14.70 1,303 3068 14.714
regex-redux
  elapsed     Mean or 95% CI
source secs mem gz cpu secs
C gcc #5 0.81 157,463 1403 2.049
C gcc #2 3.22 106,713 1121 3.222
C gcc #4 0.97 157,417 1237 3.296
C gcc #3 1.73 107,401 1273 3.317
Free Pascal 5.56 106,508 1313 5.554
C gcc

gcc (Ubuntu 14.2.0-4ubuntu2) 14.2.0

Free Pascal

Free Pascal Compiler
version 3.2.2 [2021/05/16]