« はてなブックマーク合計1000いただきました | メイン | WebブラウザベースのIDE/エディタBespinに期待 »

ソフトウェアを高速に最適化なページのメモ

プログラムを高速に最適化するための目的、手段などの解説があったのでメモ。

内容的には

  1. 目的など
  2. 手段、目標
  3. いろいろな手法の説明

等の内容となっています。具体的な手法についての詳細は無いのですが概要というか紹介的な内容となっています。英文ですが簡単な英語ですし目次の割に内容は長くないのでざっと斜め読みでいいかもしれません。

で、ちょっと思ったのが、最近では特にハードウェアが高速になってきて、効率のよいコードを書くことについて無頓着となっているのではないかということです。

私などは生業として組み込み・制御分野のシステムを開発しているので、PC等と比べると非常にプアなCPUやメモリで動作することが求められます。最適なアルゴリズムや設計を行うことはもちろんですが、コンパイラやCPUの性能をより引き出すことも重要です。そのためにはそれぞれの特性や構造などを頭にある程度入れた上でコードを書くことも必要となります。当然すっきり読みやすいソフトであることも重要です。

最近ではライブラリなどが効率的に作成されているためここのアルゴリズムを理解せずに使用していたり、適当に使っていることも多いのではないでしょ うか。しかしながらハードウェアの高速化以上に速度アップができるのがソフトウェアであるということは意外に意識されていません。よりよいアルゴリズムの 選択は場合によっては性能を飛躍的に向上させます。(例えばバブルソートや力業検索とQuickSortやツリーでの検索とか。もちろん設計においてはもっといろいろありますが)

以前、CPUやメモリリソースはどんどん増えるから凝ったプログラムを作るより目的に沿ったプログラムを作ることを重視する富豪プログラミングという話があったりしましたが、メモリは増えつつあるものの CPUはシングルCPUではそろそろ頭打ちが見えてきています。

今後はハードウェア的には複数のCPU(GPU含む)を駆使して高速に実行しようという方向性が見えてきていますが、ブレークスルーが無い限り(マルチCPUに対応するようなプリミティブな言語の一般化などか)コンパイラ技術だけではせいぜいローカルな並列処理にとどまり、並列度の高い特定分野(画像処理とか演算処理)以外は結局スーパースケーラを外に出しただけなんていう限界の浅いものとなるのでは無いかと思っています。

高い並列度を扱えるような言語は抽象度が高いものが多く、逆のものは非常に使いづらいものでプログラミングが困難であったりします。コンピュータがチューリングマシンの実現である以上シングルスレッドな処理からは逃れることは出来ません。結局は無尽蔵な性能向上に頼ることなく高速に動作するソフトを設計することは非常に重要ではないかと思うわけです。

面白かったのはイントロで 紹介されている”ムーアの法則"はそろそろ限界なのに"ゲイツの法則"つまり商用ソフトウエアは18ヶ月ごとに速度が半分になる、などという話は問題外ってことでしょうね。

今時クヌースの本などをしっかり勉強される方などは少ないとは思いますが、ライブラリを組み合わせただけの条件反射的なソフトやスクリプト言語のようなのばっかではなく、たまにはアルゴリズムの勉強をしてみたり、コンパイラの吐いたアセンブラでも眺めてみてはいかがでしょう(笑。特に私と同じ組み込み分野を目指す方には"Binary Hack"的な知識は結構普通に必要とされますし。

世界的なリセッション発生中な昨今ですが、結局金融中心でやっているといずれはイギリスのようになってしまうのでは?日本から物作りが少なくなることに非常に危惧を覚えます。ソフト産業は労働集約なので人件費が安いところで作るメリットはあるものの、言葉やメンタリティーの違いは結構大きなギャップとなって制作費アップにつながります。

コンピュータの分野は以前のドッグイヤーと呼ばれた時期よりは落ち着きつつありますが、未だに他分野に比べ変化や進歩のある分野です。若い方には知的な生産を楽しめると思います。既に足を突っ込まれた方はクヌースやカーニハンの古典もちょっと紐解いて見てはいかがでしょう。知識や技術はもちろんのこと、優れた先人たちの全ての時代・分野に変わることない真摯な態度が学べるかも知れません。

トラックバック

このエントリーのトラックバックURL:
http://blog.browncat.org/cgi-bin/mt/mt-tb-abc.cgi/819


コメントを投稿

(お書きになったコメントはすぐには表示されません。ご了承ください。)


About

2009年02月15日 05:08に投稿されたエントリーのページです。

ひとつ前の投稿は「はてなブックマーク合計1000いただきました」です。

次の投稿は「WebブラウザベースのIDE/エディタBespinに期待」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

           

カテゴリー

Powered by
Movable Type 3.36

Twitter


最近のエントリー

デル株式会社ads

注目エントリー