2009-07-27 19 views
0

私はかなりプログラミングに新しいですし、私は不思議だった。私のコードを時間と最適化する最良の方法は何ですか?私が現在したいコードは、MS-AccessのVBAでの一連のクエリですが、VB.NETとASP.NETでもタイムコードを使用したいと思います。VBAでクエリを最適化するための最適なツールとは何ですか?

これを繰り返して、各言語のタイムコードと最適化にはどのような方法が最適ですか?

私はそれを行う方法を理解するのに役立つ理由と説明を与えてください。

ありがとうございます。

+0

あなたは質問があまりにも漠然としています。 –

+0

どのような情報を追加する必要がありますか?私は主に実際にはクエリを実行するための良い方法を欲しがっています。最適化部分は単なるボーナスになります。 – Bryan

+0

クエリの実行にかかる時間や、クエリで何をしていてもコードが実行する時間に関係しますか?いずれにしても、@Remouが引用しているタイマーコードは、ベンチマークしているコードブロックの先頭にタイマー値を保存し、コードブロックの後の値と比較して、再テストが終了します。 –

答えて

2

このタイマーは助けることがあります。http://support.microsoft.com/kb/233275

インデックス(検索引数可能)を活用して、クエリが速く実行されます。必要でない場合は、Order Byを避けるなどの他の点があります。一般に、SQLをポストするのは長すぎると思われますが、速度を向上させるために多くの提案が得られます。

0

非常に大きなアプリを持っていない限り、私はツールについて心配しません。通常は、いくつかの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 
関連する問題