- 1 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:42:23 ]
- 前スレ創設者 FeaturesOfTheGod ◆UdoWOLrsDM の言葉
>プログラム板の皆さん、こんにちは。 >無謀にもこんなスレを立ててみました。 >四則演算、初等関数、その他の関数の関数値を求めるアルゴリズムについての話をしましょう。 >人間にとって計算しやすい方法についても別途語ることにしましょう。 前スレ↓ pc8.2ch.net/test/read.cgi/tech/1090227743/
- 658 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 08:51:23 ]
- >>657
distRGB の方は、 (red + (〜)>>8)<<16 を red<<16 + (〜)<<8 などど展開して red<<16+green<<8+blue とまとめて、 *volume) << の部分を出して因数分解できれば良さげだよね。 >>8 の方も レジスタの H を取るような方法で早くなるかな。 だだ、新しいCPUだと シフト演算もテーブル化してあって シフト回数がステート数に影響しないからなぁ。 あっ。もうすぐ9時なのでここまででカキコ。
- 659 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:12:30 ]
- java だから 割り算をシフトにするとかの最適化があんまり効かないのかもな
どの行が一番時間かかってるか コメントアウトしては時間計って 一番時間かかってる行から順に工夫してゆくしかないと思うけど cかDelphiでDLL作った方が早いんじゃないの?
- 660 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:20:09 ]
- あとは
Y8 = Y<<8 v = 256-volume; dstRGB[i] =(((( ( Y8 - ( (Y - red )*v) ) & 0xFF00 )<<8 + ((( ( Y8 - ( (Y - green)*v) ) & 0xFF00 ) + (( ( Y8 - ( (Y - blue )*v) )>>8 ; くらいかなv = 256-volume は最初からそう使えば問題ない でも半分は無理だろな
|

|