アカウント名:
パスワード:
そんなにいいの?
例えば、1から1000000000までの合計を求める
luajit -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
このコードが、3770Kでも1秒以下で計算されちゃうとそりゃね。LuaJITじゃなくて、素のLuaの方ですら8秒とかだもの。C/C++のようなネイティブはともかく、JavaやGo、すごいよHaskellですら単純計算では相手になりませんわ。
ちな、クソ遅いことで有名なRubyで同じことやってみ?どう書いても3分とかかかるよwww
その処理は公式を使えば一瞬で終わりますな。
gccは整数の場合は回帰式を変換して一瞬で終わらせるオーバーフローも考慮する
浮動小数点の場合は知らない
浮動小数点の場合、gcc -Sで出力したソースを見る限りではx87でもSSE2でもそういう最適化は行われなかった。これは別に最適化が劣っているとか手抜きだとか言うわけではなくて、結合法則すら成り立たない浮動小数点数だとたいていの公式は素直に適用できない("as-if"ルールを満たせない)ので、一見公式適用すれば一瞬で求められそうでも既定でそういう最適化はされない。もっとも結果が変わってもいから最適化を指示するオプションもあったと思う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
Luaって結構聞くけど (スコア:0)
そんなにいいの?
Re: (スコア:0)
例えば、1から1000000000までの合計を求める
このコードが、3770Kでも1秒以下で計算されちゃうとそりゃね。
LuaJITじゃなくて、素のLuaの方ですら8秒とかだもの。
C/C++のようなネイティブはともかく、JavaやGo、すごいよHaskellですら単純計算では相手になりませんわ。
ちな、クソ遅いことで有名なRubyで同じことやってみ?
どう書いても3分とかかかるよwww
Re: (スコア:0)
その処理は公式を使えば一瞬で終わりますな。
Re: (スコア:0)
gccは整数の場合は回帰式を変換して一瞬で終わらせる
オーバーフローも考慮する
浮動小数点の場合は知らない
Re:Luaって結構聞くけど (スコア:0)
浮動小数点の場合、gcc -Sで出力したソースを見る限りではx87でもSSE2でもそういう最適化は行われなかった。
これは別に最適化が劣っているとか手抜きだとか言うわけではなくて、結合法則すら成り立たない浮動小数点数だとたいていの公式は素直に適用できない("as-if"ルールを満たせない)ので、一見公式適用すれば一瞬で求められそうでも既定でそういう最適化はされない。もっとも結果が変わってもいから最適化を指示するオプションもあったと思う。