上記範囲を超えた数字を設定しようとすると、オーバーフローを起こし、コンパイルエラーとなってしまいます。Long型であれば許容範囲が広いので、オーバーフローはしないでしょうが、メモリのことを考えると無駄な領域は確保したくない、というのがプログラマの考えるところでしょうか。今回は、この二つの整数型について、どちらを使用すればいいかを、性能の見地から検証をしてみたいと思います。計測値が少ないので余計にループ(100回)させます。int型が扱える範囲分ループをします。まで、ループを行っています。ループ内では、四則演算および余りを計算しています。今回は処理速度が速いため、100回ほど余計にループさせています。計測値が少ないので余計にループ(100回)させます。int型が扱える範囲分ループをします。ループを行っています。これは、処理の実行回数を同じにするためです。後は、Integer型と同様の処理を行っています。上記2つのパターンについての実行結果は次の通りです。0.935※単位は全て『秒』Integer型に比べ、Long型の方が、75.77%速くなっています。大方の予想では、『速度重視(メモリ食わないので)のInteger型』、『正確さ重視のLong型(桁あふれしないので)』、だったはずです。それではなぜLong型の方が速い結果になったのでしょうか。それは、両者のメモリの格納領域によります。Basicにおいて、Integer型は2byte(16bit)領域に格納されます。Long型は4byte(32bit)領域に格納されます。最近のCPUは、32bitのものがほとんどです。※これは2010年の記事です。(かくいう今回検証に使用したPCも32bitです。)32bitのCPUの場合、処理単位が32bit単位で行われます。そのため、16bitのInteger型は、一度32bitに変換してから処理を行います。このPC内部での変換により、32bit領域のLong型の方が、結果的に速くなったというわけです。Integer型とLong型、いったいどちらを使用すれば良いのでしょう?最近の電子機器類は、目覚しく進化し続けています。7では、64bitのCPUが一般的となってきています。Excel2007以降では、1シートあたりの行数が65,536行から1,048,576行に増え、列数も256列から16,384列に増えています。32,767が最大値であるInteger型には、とても扱える代物ではありません。それらを踏まえると、Long型を使用した方が圧倒的に良いといえるでしょう。