From: matz@... (Yukihiro Matsumoto) Date: 2000-11-02T13:08:01+09:00 Subject: [ruby-dev:11365] Re: [PATCH] an analogue of `long long' まつもと ゆきひろです In message "[ruby-dev:11364] Re: [PATCH] an analogue of `long long'" on 00/11/02, EGUCHI Osamu writes: | |私も、以前同様の試みをしましたが、 |32bit の処理系では long long がサポートされれていても、 |サポート関数(gcc では __umoddi3 など)のコールに |多くの時間が費され、乗算除算はかなり速度が低下しました。 |#反対に、加減算は long long の使用で速度向上が見られます。 そうなんですか? 私のマシン(i596-linux)ではlong long化で乗算・ 除算主体の演算が倍程度速くなりました。gccの性能でしょうか。 64bitのalphaでは同じ演算が実に6倍になったという。 なにが違うんでしょうねえ。 まつもと ゆきひろ /:|) --- 試したスクリプト len=1000 base=rand(2**len) power=rand(2**len) mod=rand(2**len) #base=53 #power=9673191 #mod=743189075410231 answer=1; while(power>0) if (power&1==1) then answer=(answer*base)%mod end base=(base*base)%mod power>>=1 # print answer, "\n", power, "\n", base, "\n\n" end print answer,"\n"