2012年5月19日土曜日

今日のパソコン話 ExcelのVBAプログラムコードの実行速度で衝撃

今回の記事では、パソコンの話題について書かせて頂きたいと思います。

まずは、ExcelのVBAプログラムコードの実行速度について衝撃を受けた話です。

仕事の話なので、具体的な内容や画像をここに書かせて頂く事は出来ませんが、かなり複雑で実行時間もかかる処理を、新しい形式(.xlsm)のExcel 2007で作ったわけです。

それと全く同じコードを、古い形式(.xls)のExcel 2000に移植して実行したところ・・・。
パフォーマンスでとてつもない衝撃を受けてしまいました。

(※画像は仕事とは無関係の、プライベートで作ったゲーム一覧表のVBAです)

(※画像は仕事とは無関係の、プライベートで作ったゲーム一覧表のVBAです)

なんと、古いExcel 2000の方が6.07倍も実行速度が速いのでした。

Excel 2007の形式(.xlsm)は、それまでExcelの壁だった1シートにつき65536行までの限界を突破した形式で、大規模な処理には好んで使われそうな印象があったんですが、XMLベースのアプリケーションになっているのが災いしているのか、実行速度が滅茶苦茶に遅くなっているわけですね。

だから、65536行を超えるシートが必要になった場合は、プログラムでもってシートを複数に分割してコントロールするとかして.xls形式にこだわるのを第一として、そいでもって、それが駄目なら次に.xlsmを検討するという順番が良いのかなぁと。

逆に言えば、Excel 2007形式が悪いのではなくて、Excel 2000が超高速!という事でもあるんですよね。

限界までパフォーマンスを突き詰めないといけないExcelのVBAプログラム作る時は、この点を考慮してもバチは当たらない感じですよね・・・6.07倍だもんなぁコリャ(速度差はプログラムの内容によって変動します!6.07倍固定ではありません!)。

※追記
Excel 2007にサービスパックを当てたら高速化して2.53倍まで差は縮まりました!
しかしそれでもかなりの速度差はついたままですね・・・

次は、Windows8のスタート画面について

Windows8のスタート画面の「タイルがカッコ悪くてイヤ」という話を、友達や職場の同僚からも聞くようになって来ました。
いよいよWindows8発売が近いのかなというワクワクと共に、あの「マス目」のサイズが出鱈目なタイルは、確かに言われると微妙かも。

ただ、以前もブログに書かせて頂きましたが、consumer preview版ではありますけれど、タテ・ヨコを揃えたデザインにカスタマイズ出来るんですよね。

これが現在の、自宅の自作PCにインストールしてる私のWindows8のスタート画面なんですが、揃えたデザインに出来ます。
まぁ言ってしまえばそれだけの記事なんですけれど。
ただ、正式版ではどうなるんだろう。
あくまでも今使っているのってconsumer previewに「過ぎない」わけで、確定的な話をするのは無理なんですよね。