Early previewThis guide is in development. Items tagged verify are still being checked against official docs.
nebx Learn
GitHub
Menu
Home/Compare

Compare the six languages

Execution model, memory, concurrency and rough performance tiers, so you can choose the right tool for the job.

C++C#GoJavaScriptPHPPython
ExecutionNative machine code (AOT).NET runtime (JIT) or Native AOTSingle static native binaryV8 / SpiderMonkey / JSC engines (JIT)Zend Engine, bytecode + OPcache, optional JITCPython bytecode interpreter
TypingStatic, strong-ishStatic, strong, nullable-awareStatic, strong, structural interfacesDynamic, weak (TypeScript adds static types)Dynamic with gradual typing (strict_types)Dynamic, strong, optional type hints
MemoryManual / RAII, no GCGenerational GCConcurrent low-latency GCGarbage collectedReference counting + cycle collectorReference counting + cycle GC
ConcurrencyThreads, atomics, coroutines (C++20)Tasks, async/await, channelsGoroutines and channelsSingle-threaded event loop, workersShared-nothing per request; Fibers (8.1)asyncio, threads (GIL), multiprocessing
Raw CPU speed
Start-up time
Memory efficiency
Development speed

Tiers are an editorial estimate for typical workloads, not measured results. Real numbers depend heavily on the workload, runtime version and libraries.

These tiers are an editorial estimate, not benchmark results. For measured numbers on small CPU-bound programs, see The Computer Language Benchmarks Game, and keep in mind that results depend on how each program is written and on the runtime version.