でバイトを反復私は非常に単純なハッシュ関数を必要とし、Excelでいくつかの実験に基づくバイト値のちょうど合計がそれを行う必要があります。スピードアップのMS Access VBAスクリプトがString
Function HashPart(strVal As String) As Long
' work with byte representation for speed
Dim b() As Byte
b = strVal
Dim result As Long
result = 0
For i = 0 To UBound(b)
result = result + b(i)
Next
Quersumme = result
End Function
これは、多くのをやっていますクエリーに起因するすべてのレコード(約100)の時間:
Set rs = db.OpenRecordset(strSQL)
' Loop through records
Do While Not rs.EOF
resultHash = resultHash + HashPart(rs(0))
resultLen = resultLen + Len(rs(0))
rs.MoveNext
Loop
rs.Close
MyHash = Str(resultLen) & "-" & Str(resultHash)
これは十分に機能しますが、非常に遅いです。私の以前のバージョンでは、Midを使ってStringを繰り返し処理していましたが、これはさらに遅くなりましたが、現在は改善する方法がありません。
これをスピードアップする方法はありますか?
編集:問題はハッシュ関数ではなく、クエリにありました。
「HashPart =」を定量化する場所がわかりません。 – user3819867
@ user3819867修正済み、ありがとう! – Beginner
あなたの弦はどれくらいの長さですか(平均して)、どのくらい遅いですか? 110文字でこの文字列を10,000回実行すると、0.04秒かかります。だからおそらくあなたのクエリは遅く、関数ではありません。 – Andre