die verdächtigen Stellen kannst du einfach mit
Dim start
start = Getthreadinfo(6) ' LSI_THREAD_TICKS
.... problematic code
print "Code XXX took" , Getthreadinfo(6) - start, "ms"
stoppen. LSI_THREAD_TICKS hat eine Auflösung von ~16ms. Falls dir das nicht reicht um die Problemstellen aufzuzeigen kannst du
Declare Private Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Declare Private Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
verwenden. Dieser hat eine wesentlich höhere Auflösung.
Wir haben uns hierfür eine kleine Klasse (profiler) gebaut, welche im Konstruktor und Destruktor die Zeit misst und dann protokolliert wie lang das Objekt gelebt hat.
Man kann dann mit einem Einzeiler die Zeit stoppen, die man in einer Methode braucht:
public function anyFunction()
dim p as new Profiler("infotext") ' wenn die GarbageCollection das Objekt löscht, muss die Zeit ausgegeben werden.
... rest of code
end function
Wenn du dann deine problematischen Methoden gefunden hast, dann kannst ja mal Codeausschnitte posten.
Gruß
Roland