• 締切済み

高速なプログラムを作るには?

Windowsで高速なプログラムを作る為には、どういったテクニックがあるのでしょうか? また、そういったテクニックを勉強するにはどういった方法があるのでしょうか?(解説書とか解説サイトがあればいいのですが…)

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.6

VC++ではインラインアセンブラが使えますが、 MMX命令等をつかうと高速化できます。 アセンブラの基礎を知っていると Cでプログラムを書くときどういうコード が無駄になるのかがわかると思います。 (インラインアセンブラを使ってる書籍やサイトって少ないんですよね。) http://yuki.chiether.net/programing/asm/01.htm

参考URL:
http://yuki.chiether.net/programing/asm/01.htm
  • JF1Msf
  • ベストアンサー率20% (18/88)
回答No.5

 そう難しいことを考えず、やはり可読性を重視してコーディングし、コンパイル時に最適化オプションを付けるだけで、かなり高速になるんじゃないでしょうか。そういったテクニックはコンパイラがやってのけるので、コンパイラに任せてしまいましょう。  どんな処理系でコンパイルしていますか? Unixのccとかなら-Oオプションを使いますけど。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

私見すが、高速化テクは重要ではない。芸術性(ロジックの美しさ)と生産性と可読性をめざすべきである。結果的にはいずれも高速化に貢献する。マニアックな高速化は生産性を考えるとむしろ害がある。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.3

一口には答えられません。 あまりに漠然としすぎています。 使う言語によっても異なります。 プログラミングの段階(コーディング、基本設計、詳細設計等の各段階)によっても異なります。 たとえば、コーディングなら、 「ループ回数の事前計算」 (for(i=0; i<getCycle();i++)... を int cycle; cycle = getCycle(); for(i=0; i<cycle;i++)... に変える) とか、関数のマクロ化とか、 いくつかテクニックがあります。 設計の段階でも、たとえばオブジェクトプールとか、 スレッドの使用とか、テクニックは数え切れないほどあります。 ただし、特定のテクニックがいつでも使えるわけではありません。 場合によっては逆効果だったりします。 書籍はいろいろあるのですが、 もう少し問題を絞り込んでもらわないと答えられません。

  • ryuta_mo
  • ベストアンサー率30% (109/354)
回答No.2

どういった種類のプログラムを作るかによって話は変わってきますが、速度が要求されると言ったらゲームかデータ処理でしょうか? 80:20の法則と呼ばれるものがあります。 動作に必要な時間の80%はプログラム全体の20%の部分だと言うことです。 ※ほかにも作成に必要な時間の80%は全体の20%の部分だとかPCに限らず似たものが色々あります。 つまり、その20%を高速化できればプログラムはかなり高速化されます。 80:20の法則、80対20の法則、80=20の法則で検索をかけてみてください。 たくさんでてきますよ。 最初にどの部分で時間がかかってるのかを理解することが重要です。 可能であれば低オーダのアルゴリズムを導入すれば扱うデータが増えたときかなり高速化されます。 データ処理であればアルゴリズムの改善でかなりの高速化が期待できます。 同じ処理をループさせるようなものであればたとえば10000回ループをまわすようなプログラムの中で1命令だけ削減できても10000命令分早くなります。 時間のかかる命令をできるだけ使わないと言うのも重要です。 特に画面の描写は時間がかかります。 頻繁に画面の描写をするようなプログラムであればゲームでなくてもDirectXを使えば高速化できることもあります。 まずはどこに時間がかかってるか理解するとこから始めてください。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

プログラム言語やツールによっても、出来上がったEXEファイルの動作速度が違います。 特に、VBは遅いソフトになります。