just-in-time compiler graph TD A[Source Code] --> B[Bytecode / IR] B --> C[Interpreter] C --> D{Hot Spot?} D -->|Yes| E[JIT Compiler] D -->|No| C E --> F[Native Machine Code] F --> G[Execution] C --> G See also: thoughts/jit.py toy example for branch optimization: import numpy as np import numpy.typing as npt cache: list[npt.NDArray[np.float32]] = [] def dct_jit(x: npt.NDArray[np.float32]) -> npt.NDArray[np.float32]: global cache x_tuple = tuple(x) if x_tuple in cache: return cache[x_tuple] N = len(x) result = np.zeros(N) for k in range(N): sum_val = 0 for n in range(N): sum_val += x[n] * np.cos(np.pi * k * (2 * n + 1) / (2 * N)) result[k] = sum_val cache[x_tuple] = result return result