4 ms·
>3. Go is not a good candidate for this universal runtime in 2016 due its lack of a mature optimization pipeline. Maybe in a few years, but in the meantime you'
by voidlogic 10y ago
>3. Go is not a good candidate for this universal runtime in 2016 due its lack of a mature optimization pipeline. Maybe in a few years, but in the meantime you'd be better off using HotSpot or .NET for this purpose.
Go 1.7 on amd64 is looking to be pretty competitive (ranging to better than) with HotSpot or .NET in micro-benchmarks. Most of this is due to the new SSA compiler back-end. "Years" might be a pessimistic appraisal.
- pcwalton 10y agoGiven how long it took LLVM to become competitive with GCC (and LLVM has been SSA from the start), even with a world-class team of optimization experts behind it, I think history has shown that it takes a long time to compete with mature optimizing compiler pipelines. There's no substitute for the long engineering slog of tuning a generational GC and implementing algebraic simplifications, alias analysis, devirtualization, SROA, SCCP, instruction selection, instruction scheduling, autovectorization, LICM at multiple IR-levels, etc. No silver bullet substitute for the hard engineering work exists (other than using an off-the-shelf backend, of course). Microbenchmarks are one thing; breadth and depth are another. It doesn't take much to compete with GCC in a loop summing integers (unless GCC vectorizes that loop or precomputes the value, of course!) but competing on SPECINT is quite another.