アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
コンパイラに勝つ方法 (スコア:1)
ちょっとバイナリから外れるけど(汗
Re:コンパイラに勝つ方法 (スコア:2, 興味深い)
まだキャッシュと言うものが無くてCPU内部クロックとメモリアクセス速度とが同じ時代はいろいろありましたがね。
アドレス演算はインクリメントよりデクリメントの方が速かったとか、
割り算より掛け算が早いから逆数掛けてシフトするとか、
1/4正弦テーブルで16bitSinCosを引いてくるとか、
PCレジスタ相対でアドレス求めるとクロックが1稼げるとか(1命令3クロックとか4クロックの時代)、
任意の範囲でループ無しのテーブルジャンプでメモリコピーとか(いまではキャッシュに収めてループの方が早い)
ハハハ
Re:コンパイラに勝つ方法 (スコア:1)
>2. 割り算より掛け算が早いから逆数掛けてシフトするとか、
>3. 1/4正弦テーブルで16bitSinCosを引いてくるとか、
>4. PCレジスタ相対でアドレス求めるとクロックが1稼げるとか(1命令3クロックとか4クロックの時代)、
>5. 任意の範囲でループ無しのテーブルジャンプでメモリコピーとか(いまではキャッシュに収めてループの方が早い)
1,4 ---- そんなことはコンパイラが知っている
2,3,5 -- アセンブラに特化した手法ではなく高級言語で書けばよ
Re:コンパイラに勝つ方法 (スコア:1)
文脈読んでくださいね~、だれも今の超絶アセンブラの例など書いてませんよと。
AZUCOさんが「そうです。いわゆる旧世代の高速化技法というのはほぼ死滅したわけで、」と書けるのは文脈読めてるからですよね。
ちなみにコンパイラを過信すると・・・ってのはよくある話です。
当時のコンパイラだって”コンパイラが知っている”ハズのことをやってないのは珍しくもないし今でも・・・。
>2は「シフト」とあるんで固定小数の話かな?
>整数除算命令がない(ので関数呼び出しになる)とか極めて遅いCPUとかあるので、今でも有効。
そうです、正解。
「CPU内部クロックとメモリアクセス速度とが同じ時代」と言うのは浮動小数点演算器はオプション装備で普通は無くても不思議ではなかった時代ですよと暗黙に示してもおります、メジャーCPUならi286とか68000が末期あたりかな?
Intelだとi386/i486で浮動小数点演算器有りのDXと無しのSXが並列で売られCPUのデフォルト標準装備になったなのはPentiumからだったかなと曖昧な記憶。
680x0系も"EC"が頭に付くと浮動小数点演算器無しバージョンになった68020/68030、これ以降は涙無くては語れない。
Re:コンパイラに勝つ方法 (スコア:0)
(正確にはUINT_MAX/3+1をかける)