#29 | Withステートメント構文の効果を調べる | |||
Withステートメントは、ある同じオブジェクトに対する一連のステートメントを実行ための、フロー制御ステートメントです。ある単一のオブジェクトの複数のプロパティをまとめて変更したり、メソッドを実行するような場合、With〜End With 構文の中に、プロパティを割り当てるステートメントやメソッドを指定します。この方法を使えば、各プロパティやメソッドの前にオブジェクト名を指定する必要はありません。最初のWithステートメントの行で1度だけ指定してやればよいのです。 txtData.Height = 500
これらはいずれも、"txtData"というオブジェクトに対して、プロパティ設定とメソッドを実行しています。これをWithステートメントを使って書き換えると次のようになります。
txtData.Width = 500 txtData.Requery With txtData
コードの行数は若干増えますが、ずいぶんスッキリした感じになると思いませんか?。個人的には、もっぱら、「今どのオブジェクトに対してプロパティを設定しているのか、メソッドを実行しているのかといったことが判別しやすいように」という目的で使っています。また、同じコード(ここでは"txtData"というオブジェクト名)を何回も繰り返し記述しなくてよいというのも、しばしば使う理由です。.Height = 500 .Width = 500 .Requery End With しかし、書籍等では、このWithステートメントにはパフォーマンスを向上させる効果があると書かれているものもあります。そこで、プログラムを見たときの違いは一目瞭然だと思いますが、ここではその処理速度が実際どの程度違うのか、比較してみたいと思います。 今回は、フォームを使って、そこに配置されたテキストボックスに対して複数のプロパティ設定を実行するというテストを行ってみます。コマンドボタンは2つ用意されていて、それぞれのボタンをクリックすると、Withステートメントを使わない処理、Withステートメントを使った処理を実行します。コードの記述が異なるだけで、やっていることはまったく同じものです。測定された処理時間も、フォームの別のテキストボックスに表示します。 2つのコマンドボタンそれぞれのイベントプロシージャは、次のようになっています。
実行結果は次のようになりました。 Withステートメントを使わない場合 Withステートメントを使った場合 結果的に、明らかにWithステートメントを使った方が速いことが分かります。しかしながら、あくまでも1000回ものループを実行した結果ですので、実用的には大差ないといっていいでしょう。 でも、やはり、
|
||||
|
Copyright © T'sWare All rights reserved |