It depends. On current CPUs the bottlenecks are in order:
- IO processing
- Memory
- CPU
In particular, any language that doesn't have any escape hatch to do manual memory management will have troubles to optimize memory bound workloads.
In scientific computing, machine learning, deep learning and in image processing, in particular stencil code, 90% of the workloads are memory bound (the CPU-bound being those involving convolutions and matrix multiplications once you get the data at its proper place, and things involving exponentiation or trigonometric functions).
- IO processing
- Memory
- CPU
In particular, any language that doesn't have any escape hatch to do manual memory management will have troubles to optimize memory bound workloads.
In scientific computing, machine learning, deep learning and in image processing, in particular stencil code, 90% of the workloads are memory bound (the CPU-bound being those involving convolutions and matrix multiplications once you get the data at its proper place, and things involving exponentiation or trigonometric functions).