いまだに時々(今日またw)なんですが、
「IBM i(AS/400)てJava遅いんですか」
と聞かれることがあります。遅いと理解しています、という感じなんですが。
これ、三つ子の魂百まで、と似てて、確かにOS/400 V3,V4+POWER5以前はそれもしょうがないなあ、という感じではありました。その辺をポイント絞ってまとめます。
かつてAS/400 JAVAが遅かった理由
・POWER5までは同時代のインテルCPUのクロック数の約1/2程度だったこと(1多重同士でベンチすると間違いなく遅い)
・OS/400は最初からJDKが64ビットだったが、WINDOWSは32ビットだった
・JAVAの実装がSUN JAVA準拠だった(他社の一般的なJDKより厳格な仕様で安定性は高かったが重かった)
100多重でベンチする機会より数多重位でベンチする方が圧倒的に多かったですからAS/400が遅いというのはまああったわけです。それでも100多重等でベンチするとWINDOWSより速かった(当時からSMT4など多重化処理は速かった)んですけどね。
今、IBM i JAVAが速い理由
・CPUクロックが速くなった。インテル比でクロック数は対等以上でしょう。
・コア性能もPOWER6以降、前モデル比で+30~40%くらいずつ速くなってますし。インテルはほとんど変わってないと思うのでPOWER頑張ってると思う。
・JDKが他のプラットフォームと共通の一般的なJAVA実装に変わった 軽い
・PASE上(AIXランタイム環境)でJAVA稼働するようになりAIXと完全に共通化されより速くなった
*32ビットJAVAを後追いでサポートした。今やWINDOWSも64ビットが標準ですがw。IBM i は32/64ビット両方1つのOS上で同時に動きます
・SMT8で多重処理がさらに速くなった
こんなところでしょうか。
SpecJBB
SpecJBBでも2010年代中盤頃まではAIXとほぼ同等~▲10%位で業界最速級でした。最近はAIXがすごく速くなっちまって敵わないけど他社よりは速いはずです。最近ちょっと調べてないので後で調べてみます。
■2022/11/16追記
Specjbbのスコアを調べてみました。長くなったので下記に分割しました
https://qiita.com/gomAnomalocaris/items/ccaeeefeb0e91eee9438