2010-05-31 Mon

C言語で書いたプログラムの高速化のポイントはどこ?

この2年くらいコツコツ書いていたライブラリが、そろそろToDOを全部消化した状態になりそうです。
なので高速化に取り組みはじめました。諸事情によりC言語で書いてるので情報も多そう。

ちょっと調べただけでも以下のようにザクザクと見てみるべき部分に対する言及がみつかります。

- 整数の変数型はunsigned int型またはint型に
- 掛け算/割り算を極力使わない
- 掛け算/割り算が必要な場合、2の累乗で代用
- 実数演算が必要な場合、整数を使って演算
- ループの終了条件で関数呼び出しを行なわない。
- ループをダウンカウンタに
- 寿命が短いならalloca() を使う
- ループに番兵を付けて終了判定をケチる
- ループからループに依存しない判定を出す
- ループの回数を減らす
- 結果をキャッシュする
- 単純な代入だけならif文ではなく三項演算子を使う
- if文を使う場合、先に代入して避けられるelse文は書かない


実際にやってみて効果があったことも混ざってます。
明日から、それぞれ効果がどれくらいか見つつ作業してみよう。

ちまちまコードをいじらなくてもコンパイル時に「-O***オプション」を付けてるので何とかなってそうですが、それでオシマイじゃなくて、なるべく自分でコードを早くする方法を頭に定着させたいす。

参考文献


- C言語・処理の高速化
-- http://www.geocities.jp/nakamiya_town/ProC.html
- C/C++のプログラム高速化 (続き) - それって食えるのか?
-- http://jimsie.blog57.fc2.com/blog-entry-39.html

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

今週も寿司処「沖次郎」へ。明日以降も同じような値段らしい。 (赤坂)

今日が「750円定食の最終日」ということだったので、[2010-05-25-2] に行ったばかりだけど、ぞろぞろとみんなで行きました。13時前だったので店内は混雑してました。前回は13時過ぎに来てノンビリできたので、ちょっと遅めがオススメみたい。

再び「上にぎり12貫」を注文。


from overlast using Apple iPhone 3GS

このセットが750円は安いなぁ。

お店のご主人が「明日から値段を戻そうとしてたんだけど、戻せないよね。明日からメニューを少しかえるけど頑張るから、来てくれなきゃ困るよ〜」と言ってました。やりましたね。

なので、また来週に行ってみようかな。

関連リンク


- Kuh at table studio TAKITO - 赤坂/自然食、和食(その他)、オーガニック [食べログ/公式]
-- http://r.tabelog.com/tokyo/A1308/A130801/13095392/
- テーブルスタジオ・タキトー|クッキングスクール
-- http://www.table-studio.jp/

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |