Common wisdom dictates that native languages are the only means of building high-performance applications. How do managed runtimes such as those available to .NET, Java, and even JavaScript, yes even JavaScript compare? Many applications requiring high-performance are now developed for managed runtimes - such as financial trading, data stores and analytics, messaging processing, and even supercomputing. Over the last few decades we have seen significant advances in managed runtimes, particularly for JIT compilers and garbage collectors. In this talk we will explore how our managed runtimes can equal, and even better in some cases, the performance of native languages.
58. Eden Survivor 0 Survivor 1
Young/New Generation
TLAB
TLAB
Tenured
Virtual
Virtual
Old Generation
Generational Garbage Collection
59. Modern Hardware (Intel Sandy Bridge EP)
C 1 C n C 1 C nRegisters/Buffers <1ns
L1 L1 L1 L1~4 cycles ~1ns
L2 L2 L2 L2~12 cycles ~3ns
L3 L3
~40 cycles ~15ns
~75 cycles ~25ns (dirty hit)
~65ns
DRAM
QPI ~40ns
MC MC
DRAM
DRAM
DRAM
DRAM
DRAM
DRAM
DRAM
...
...
...
...
...
...
QPI QPIPCI-e 3 PCI-e 3
40X
IO
40X
IO
* Assumption: 3GHz Processor