新しいものを表示

たぶんだけど、JavaVMも同じくスタックマシンだから、cs版をJavaに、MSIL版をJavaバイトコードアセンブラ(?)にほぼそのまま移植したら同じくらいの差が出そう・・・?><

ものすごく前にマストドンで「MSIL(CIL)を直接書いて速くなる場面なんてあるのかな?><」って書いた記憶あるけど、一応あることはあるんだね・・・><(たぶん実用的な意味は無いけど><;)

オレンジはdnSpyで中身見てた><

orange さんがブースト

あとReflexilとかdnSpyでILいじって遊ぶのも楽しいです

orange さんがブースト

これなにがいいって、命令にカーソル乗せると意味が表示されるんですよ

スレッドを表示
orange さんがブースト

あれ?><; 最適化無しで試したら
C# 版: 3295ms
MSIL版: 1453ms
System.Math: 63ms
って結構差が・・・><;

orange さんがブースト

(Delphiじゃなくbccだったかもしれない・・・><(よく覚えてない><;))

でも、生まれて初めてアセンブラで書き直して高速化に成功できたから一応うれしい><(DelphiでMMX使って数命令の短いインラインアセンブラなコードで速くした事なら前にあるけど、処理丸ごとアセンブラで書いて速く出来たのは初めて><)

やっとdllに出来たのでベンチマークしてみたけど、10000000回ループで、
C# 版: 1477ms
手書きMSIL版: 1458ms
って速くはなったけどものすごく微妙><; そして
System.Math: 3ms
・・・・・・・・><

dllとしてアセンブルしてもなぜかVSのオブジェクトエクスプローラで中身が表示されない・・・><

ループの中身、C#バージョンではnop抜いて27命令だったのを、19命令に減らせたっぽい><

なんか頭の使い方がパズルっぽくて、普段のプログラミングよりもテラリアとかで計算機の回路作って遊んでる時に近くておもしろかった><

orange さんがブースト

コメントの // F hoge, fuga みたいなのはスタックの状態のメモです><;

pastebin貼れたっぽい><
sqrtを計算するやつCIL(MSIL)版><
pastebin.com/mL2AxsQc
(シンタックスハイライトがilは流石に無いっぽいのでC# に設定しました><;)

古いものを表示
:realtek:

思考の /dev/null