Octobench

Measuring compilation speed

Octobench is a code generator to test compiler compilation speeds on different hardware.
The code generator generates a number of functions that calculate a Fibonacci number in a way that generates many lines of code to compile.
A compiler can then compile the code and we can measure the compilation time on a set of hardware.
The size of the generated code can be adjusted so compilation speed E.g. can be measured for 10.000 LOC or 1.000.000 LOC.
Octobench currently supports
The generated code looks like this - calculate Fibonacci(3). The code uses big.Int/BigInteger because Fibonacci numbers get large fast and if we want to generate f100000 and see if it works ints range is not big enough. The Map is for speeding things up by calculating f12 etc. only once.
public static BigInteger f3(Map m) {
  if (m.containsKey(3)) {
    return m.get(3);
  } else {
    BigInteger r = M1.f2(m).add(M1.f1(m));
    m.put(3, r);
    return r;
  }
}
func F3(m map[int]*big.Int) *big.Int {
  val, ok := m[3]
  if ok {
    return val
  } else {
    r := big.NewInt(0)
    r.Add(F2(m), F1(m))
    m[3] = r
    return r
  }
}
Contact: stephan@amazingcto.com

Results

Compiler Func LOC Time Loc/s CPU Cores Drive RAM Version Vendor OS
Go 10000 111098 3.85 28857 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 20000 222198 8.04 27637 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 30000 333298 14.65 22751 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 40000 444398 17.01 26126 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 50000 555498 22.49 24700 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 60000 666598 27.93 23867 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 70000 777698 33.99 22880 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 80000 888798 42.33 20997 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 90000 999898 47.19 21189 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 100000 1110998 54.74 20296 3900x 12P / 0E WD_BLACK SN850 32 19.3 WSL
Go 10000 111098 8.2 13549 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 20000 222198 16.57 13410 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 30000 333298 26.35 12649 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 40000 444398 33.79 13152 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 50000 555498 42.03 13217 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 60000 666598 50.81 13119 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 70000 777698 65.9 11801 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 80000 888798 77.57 11458 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 90000 999898 88.16 11342 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL
Go 100000 1110998 100.42 11064 3900x 12P / 0E Samsung SSD 970 EVO Plus 32 19.3 WSL

SSD Drive comparisons for compile speed

Compile Speed Go Western Digital WD BLACK 850 vs. Samsung 970 Evo Plus