- ベストアンサー
自作関数の方がパフォーマンスが悪い?
先日こちらで質問したものですが いくつか自作関数を作ってクエリを表示させてみたところ、 心なしか表示が遅いし画面がぶれる気がするのですが 自作関数は最初から用意されている関数より パフォーマンスが悪いのでしょうか? 前回質問:http://okwave.jp/qa5373030.html
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
確実に悪いです。 SELECT table1.field1, myFunc(table1.field2) FROM table1 table1 が 1000行なら myFunc は 1000回呼び出されますよね。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 VBAは、一旦、実行時前に中間言語(Pコードと言う)に変換され確保されています。[順次コンパイル]モードにしておければ、そのつど、翻訳されることはありません。だから、この時点ではそんなに遅いということではありません。もちろん、組み込み関数で作られているC言語とは比較にはなりませんが、Basic のようなインタープリタ言語よりは、非常に高速です。VBなどにも、ビルド前のデバッグモードのときに存在するものです。 しかし、Application とVBA をつなぎますから、オブジェクトから引数を取得したりする場合は、どうしても遅くなってしまいます。 また、IIF関数は、その中の判定をすべて通っていきますので、VBAのユーザー定義関数には向かないもののひとつです。Access のヘルプにも、これは書かれていたはずです。 ACC2000: Visual Basic for Applications Is Both a Compiler and an Interpreter 以下は機械翻訳 http://support.microsoft.com/kb/209176/ja http://oshiete1.goo.ne.jp/qa1431672.html
お礼
ありがとうございます。特にIIF関数はむかないのですね。
- rivoisu
- ベストアンサー率36% (97/264)
VBAはインタープリターですから遅いです。 呼ばれるたびに機械語に翻訳されて実行される。 この翻訳が負荷の大きい処理なのです。 使う場面を十分の考えましょう。
お礼
なるほど。有難うございます。
お礼
やはりそうなんですね。有難うございます。