注目すべきは、clang-19によるビルドがclang-18に比べて約9~12%ほど遅くなっている点だ。一方tail-callインタープリタはclang-18よりやや速いか、あるいはほぼ同等の速度を示す。つまり、clang-19同士で比較すると大きな速度改善とも言えるが、clang-18と比較すると当初の「10~15%高速化」という数字ほどの大きな改善ではないことがわかる。 LLVM 19における問題 こうした結果を引き起こしたのは、LLVM 19のある特性だ。 クラシックなバイトコードインタープリタは以下のような構造を持つことが多い。 while (true) { opcode_t this_op = bytecode[pc++]; switch (this_op) { case OP_IMM: { // push an immediate onto the stack break; }
