2007-12-27[n年前へ]
■「ファミリーレストランで待たされないコツ」と「高速計算プログラミングのコツ」
雑学本を読んでいると、「ファミリーレストランでは焼き物・揚げもの・ゆで物といった種別ごとに調理担当者が決まっていて、一つの種類に注文が集中すると一度に何人分も処理できなくて、できあがりが順次遅れていくことになる。だから、ファミレスで早く同時に料理ができあがって欲しい時には、バラバラな種類をオーダーするのがコツだ」というようなことが書かれていた。
これを読んで、思い出したのは「コンピュータで処理速度を速くしたいときのプログラミングの基本」である。たとえば、計算機の中で、処理がどのように行われるかを考えて、できるだけ効率的に並列化されるようにプログラミングをする。特定のユニットの処理が全体のボトルネックにならないように考える、といった話だ。 ファミレスの厨房の中で働く人たちに流れてくる注文や、計算機の中の色々なユニットに流れてくるさまざまなジョブを、それぞれの役割・機能に応じた処理を行っていく。 どこか一つに仕事が集中すれば、そこの速さで全ての処理速度が決まってしまう。 だから、上手く並列化・分散化するようにJOBを流すように工夫することで、早く料理を食べたり、計算結果を早く得たりする。
しかし、振り返って考えてみれば、こういった「ファミリーレストランで待たされないコツ」と「高速計算プログラミングのコツ」といったことは、結局どんなことに対しても当てはまるのだろう。 どんなものも、どう中身が動いているかを考えて、上手く動かせば効率化できるに違いない。 もちろん、効率だけを考えるのも、それはそれで少しつまらないかもしれない。 どんなに調理に時間がかかっても、食べたいものは食べたい、と思うこともある。 人気ラーメン屋の前で、何時間も行列に並ぶ人たちがいるように。