T2000の罠
こないだのサーバ入れ替えで使っているT2000日本オラクル | Integrated Cloud Applications and Platform Services。このコンテナ上で動作しているあるAppの動作が以前のV240より遅いと報告。
ソースをチェックすると、DBから抽出してきたデータに対して、条件×件数でさらに二重ループをかけている。以前の環境と同時に使えるようにして動作をチェックすると、件数が多いところほど遅い。
そういえば、T1プロセッサは数値計算はそれほど早くないんです。。なんてセミナーで言っていたなと思い出してちょとしたスクリプトで検証。9999×9999の空ループをするperlプログラムを1秒でかいて、
#!/usr/bin/perl $i=0 ; $j=0 ; while ( $i < 9999 ){ while ( $j < 9999 ){ $j = $j +1 ; } $j = 0; $i = $i+1 ; }
いくつかの環境で実行。
T2000(SparcT1)
$ time ./mm.pl real 2m2.111s user 2m2.120s sys 0m0.012s
V240(SparcIIIi×2)
$ time ./mm.pl real 1m10.842s user 1m10.780s sys 0m0.010s
X5440(QuadXeon2×4:うち8コア割当環境)
$ time ./mm.pl real 0m12.954s user 0m12.485s sys 0m0.465s
ついでにIntelIII 1MHz
$ time ./mm.pl real 1m30.262s user 1m20.190s sys 0m0.130s
さらについでにIntelCore2Duo 2.8MHz
$ time ./mm.pl real 0m20.963s user 0m20.173s sys 0m0.038s
そうかぁ、Webアプリでもぐるぐる回る処理があると遅くなるんですねぇ。Intelのどこかへ移すか。