経済

プログラムにおけるパフォーマンスとは

サイバースペースの処理をイメージできるかがカギ

私が初めてプログラムに触れたのは、新卒入社してすぐの研修の時でした。朝、会社の研修所に行くと席にJavaのテキストが置いてあり、Javaを動かすための環境を設定するためのレクチャーを受けた後、「では、テキストを見ながら課題に記載しているプログラムを組んでみてください」といきなり言われて、テキストを読みながらプログラムを組んでいきました。

プログラムに触れた当初は、「こう書くと、こういう風に画面に表示される」とか「こう書くと、こういう風に処理される」という事が分かるので、それをつなげて目的のアウトプットを目指していく作業で手いっぱいの状況になります。

しかし、プログラミングに慣れてくると、結果が出るのにやたら時間がかかるのを何とかできないかとか、もっと短いコードで同じ結果にならないかといったことを考える余裕が出てきます。この段階からパフォーマンスという事を意識し始めます。

正直、私の場合はパフォーマンスというのが一体何を示しているのかほとんどわからずにずっとプログラミングを組んでいましたが、プログラマーの方と一緒に仕事をした時に、パフォーマンスとは何かという説明をしてもらい、非常に納得しました。

サイバースペースでもデータを運ぶ必要がある

データはデータベースという倉庫に格納されていて、処理を行う際にそのデータベースからプログラムで命令して、データを取ってきてもらいます。この、データをデータベースに取りに行く回数が少なければ少ないほどパフォーマンスは向上します。

プログラミングの初心者はこのデータベースと処理を行う領域は結構遠いというイメージが無く、例えば10,000個のデータを1個づつデータベースから取ってくるように指示してしまったりします。10,000個をいっぺんに処理を行う領域に持ってきてから、データの処理を行うことができれば、データベースという倉庫まで1万往復する必要が無く、その分処理スピードが上がります。

Excelで考えるとわかりやすいと思いますが、Excelのあるファイルから別のファイルにデータをコピーしたいとします。この時、セルを一個一個コピーペーストしていったら相当時間がかかります。これをシートごとコピーして移してしまえば一瞬です。このように目に見える形でやると明らかに非効率なのですが、これがプログラムとして書いてみるとそんな作業になっていることに、なかなか気がつきません。

結果できているからといって、満足せずより楽により早く同じことができないか考えなければならないのは実際の作業のPDCAサイクルと同じです。