- 締切済み
処理の高速化
はじめまして. この度,初めてVisualCを使うことになった,C初学者です. 今回,人が作ったあるプログラムにつきまして,処理の高速化を考えております. 初心者の私としては,まずはどこから手を付けて良いか全く見当が付きません… 皆様,どの辺から検討に入った方が良いのか,教えて頂きたく. どうぞよろしくお願いします.
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- mttk1238
- ベストアンサー率15% (9/59)
こんにちわ。 Cに関しては趣味程度の者ですがアドバイスを。 質問内容から業務で使用するプログラムと推測する のですが、どうなんでしょう。 もし業務で使用するプログラムなら、保守性を考え 処理の高速化ばかりに気をとられないほうがいいと 思います。今度はあなたの作ったプログラムを他の 人がみる可能性もありますし。 一番良い方法は、一度人の作ったプログラムの流れ を自分で書いてみることです。そうすることで、処 理上、無駄な部分が見えてくるかもしれません。 具体的な話では、#1、2、3さんが言われているよ うな手順を試してみてください。 ちなみに大学生時代は最適化アルゴリズムについて 研究をしていたので、処理の高速化というタイトル を見て飛んできてしまいました(笑) masayuki3628さんが1からプログラムを組むのでし たらいろいろアドバイスができたかもしれません。
- blue_murder
- ベストアンサー率34% (54/157)
こんにちは。 まずは、 ・プログラムがどのような種類か? (Windowsアプリケーション、Webアプリケーションなど) ・どのような動作をするものか? (DBにアクセスする、ネットワークを参照するなど) ・切り分けできるか? (起動が遅い、ある処理は早いが、違うある処理は遅いなど) 業務で使用するプログラムであると思いますので 支障のない程度で内容を提示していただくと、 アドバイスが得やすいと思います。
- neKo_deux
- ベストアンサー率44% (5541/12319)
業務としてでしょうか?研究として?後者の場合、アルゴリズムを見直すという方法でないと、研究にならないかも。 前者の場合は、まずは現在のプログラムの調査、どの処理に時間がかかっているかを調べる作業でしょうね。 プロファイラ、プロファイリングツールなど、実行時に各行の処理回数を計測するようなツールを利用するのが基本でしょう。 プロファイラの効果的な使い方に関して、こちらの本の最初に出てきます。サンプルなどはちと古いですが、読んでいて面白い本ですので、図書館などにあるのでしたら一読をお勧めします。 近代科学社 - プログラマのうちあけ話 続・プログラム設計の着想 http://www.kindaikagaku.co.jp/bookdata/ISBN4-7649-0177-3.htm こちらの本でも引用されていますが、D.E.Knuth(TeXで有名な方です)の論文で、「一般にプログラムの4%以下の部分が全実行時間の半分を占める」という言葉があるそうです。 大雑把に言うと、プログラムの中核となる部分に手を入れると、処理速度を大幅に向上させる可能性が有る。と言うような意味合いです。
- 12m24
- ベストアンサー率23% (193/817)
基本的には、プログラムを劇的に高速化できる手法としては、計算方法の改良があげられます。たとえば、 ・逐次検索(先頭から一つずつ確かめる)→インデックス検索(インデックスを作成しておいて検索) ・並び替え順序の変更 などが考えられます。