私はかなりプログラミングに新しいですし、私は不思議だった。私のコードを時間と最適化する最良の方法は何ですか?私が現在したいコードは、MS-AccessのVBAでの一連のクエリですが、VB.NETとASP.NETでもタイムコードを使用したいと思います。VBAでクエリを最適化するための最適なツールとは何ですか?
これを繰り返して、各言語のタイムコードと最適化にはどのような方法が最適ですか?
私はそれを行う方法を理解するのに役立つ理由と説明を与えてください。
ありがとうございます。
私はかなりプログラミングに新しいですし、私は不思議だった。私のコードを時間と最適化する最良の方法は何ですか?私が現在したいコードは、MS-AccessのVBAでの一連のクエリですが、VB.NETとASP.NETでもタイムコードを使用したいと思います。VBAでクエリを最適化するための最適なツールとは何ですか?
これを繰り返して、各言語のタイムコードと最適化にはどのような方法が最適ですか?
私はそれを行う方法を理解するのに役立つ理由と説明を与えてください。
ありがとうございます。
このタイマーは助けることがあります。http://support.microsoft.com/kb/233275
インデックス(検索引数可能)を活用して、クエリが速く実行されます。必要でない場合は、Order Byを避けるなどの他の点があります。一般に、SQLをポストするのは長すぎると思われますが、速度を向上させるために多くの提案が得られます。
非常に大きなアプリを持っていない限り、私はツールについて心配しません。通常は、いくつかのdebug.print
ステートメントとTimer()
コールを使用してボトルネックをゼロにすることができます。
私は:)
のサイズを変更し、アレイ上に非常にpedantic answerからリッピングしてきた以下のコードは、(メッセージボックスをコメントアウトしてみ)て、あなたはあなたのコードウィンドウの下部にあるちょっといいデバッグMSGが表示されます。
Option Explicit
Sub RedimTest()
Dim tA, tB As Single
tA = RedimTestA(1000000)
tB = RedimTestB(1000000)
MsgBox "Test A takes : " & tA & ", and Test B takes : " & tB
End Sub
Function RedimTestA(iterations As Long) As Single
Dim t As Single
Dim i As Long
Dim aryString() As String
Dim myString As String
t = Timer
Do While i <= iterations
ReDim Preserve aryString(i) As String
aryString(i) = "ABCEFG123"
i = i + 1
Loop
RedimTestA = Timer - t
Debug.Print "RedimTestA: " & Format(RedimTestA, "#0.0000ms")
End Function
Function RedimTestB(iterations As Long) As Single
Dim t As Single
Dim i As Long
Dim aryString() As String
Dim myString As String
t = Timer
ReDim aryString(0) As String
Do While i <= iterations
If i >= UBound(aryString) Then
ReDim Preserve aryString(i * 2) As String
End If
aryString(i) = "ABCEFG123"
i = i + 1
Loop
ReDim Preserve aryString(i - 1) As String ' i - 1 becuase of the final i = i + 1
RedimTestB = Timer - t
Debug.Print "RedimTestB: " & Format(RedimTestB, "#0.0000ms")
End Function
あなたは質問があまりにも漠然としています。 –
どのような情報を追加する必要がありますか?私は主に実際にはクエリを実行するための良い方法を欲しがっています。最適化部分は単なるボーナスになります。 – Bryan
クエリの実行にかかる時間や、クエリで何をしていてもコードが実行する時間に関係しますか?いずれにしても、@Remouが引用しているタイマーコードは、ベンチマークしているコードブロックの先頭にタイマー値を保存し、コードブロックの後の値と比較して、再テストが終了します。 –