これからの開発のこと

久しぶりに書いてみる。とりとめもなく、まとまっていないけど。

昔のCPUは1コアで、周波数を上げる方向に改良させていた。最近はこの周波数を上げると言うことが限界になってきたから、コアを沢山のせて速度の改善をしている。

でも、家のPCではQuadコアを使用しているけど、あまり早さを感じない。重いアプリケーションを使用しているときのタスクマネージャーを見ると、1つのコアの使用率は100%だけど、他のコアはほとんど使用していないと言う状態。希望としては全てのコアが使用され、使用率が80%位の状態。
現状ではコアが増えても、それを使い切れていない状態。コアが増えても意味がないんだな。

OS(アプリケーション?)が、もっとマルチコアを生かすようにならないといけないな。
Windowsではだめだったけど、Linuxなどではうまくいくのかな?MacにのせたEclipseがCPUをがんがん使ってとても快適と聞いたことがある。本当なのかな?

OSレベルの話は手がでないけど、アプリケーションレベルでこれらを改善する方法を考えていかないといけないんじゃないかな?これからの開発者は。

1プロセスが1コアに限定されてしまうアーキテクチャであれば、この問題は解決できない。でも、1プロセスで複数のスレッドを使用しているアプリケーションは多いのだから、このスレッドをうまくコアに分散させればいいと思うんだけど。そういうことは実際やられていると考えるんだけど(実際にどうかは知らないけど、すごい人たちが開発しているんだからきっとできているはず・・・)。

こう考えてくると、これからの開発者は、マルチスレッドプログラミングを当たり前に使用する必要が生じるのかな。
Scalaが注目されているのも関係有るのかな。

追伸:APサーバとかでコアが増えたから、インスタンスを複数立ち上げた方が性能が良かったと言う結果があるけど、これはCPUがうまくさばけていないからなのか?まだOSは対応していないのかな?