To nie jest żaden skrypt - w Delphi tworzy się normalne, kompilowane i natywne aplikacje, a nie żadne skrypty; Oczywiście zaraz ktoś przyleci i nudzić zacznie, że jest odmiana stricte skryptowego Pascala, jednak w tagu jest delphi
, stąd moja uwaga na temat nazewnictwa;
____Co do tematu - klasa TTimer
nie nadaje się kompletnie do tego; Ona służy do wykonywania zadanego kodu cyklicznie, a Ty potrzebujesz zmierzyć czas dwa razy, do tego bezpośrednio przed i po wykonaniu sortowania;
I teraz wszystko zależy od dokładności pomiaru; Jeśli to Twoje sortowanie wykonuje się co najmniej kilkadziesiąt milisekund lub kilka sekund, możesz wykorzystać funkcję GetTickCount; Ta funkcja pobiera z systemu liczbę milisekund, więc działa z dokładnością co do jednej milisekundy;
Jeżeli krócej - będziesz potrzebował dokładniejszego pomiaru; Najdokładniejszy znany mi sposób to pomiar za pomocą funkcji QueryPerformanceCounter; Jeżeli będziesz potrzebował przeliczyć wynik na jakąś jednostkę czasu, dodatkowo użyj funkcji QueryPerformanceFrequency i prostej arytmetyki;
____A co do samego kodu - wpakowałeś wszystko do głównego bloku i zadowolony... Polecam wydzielić sobie kod sortujący do osobnej procedury - dzięki temu kod będzie czytelniejszy; Zrób to tak, aby można było wywołać procedury w ten sposób:
QueryPerformanceCounter(intStart);
MySuperHiperSortAlgorithm();
QueryPerformanceCounter(intStop);
intTime := intStop - intStart; // tu masz czas w tikach licznika
Całość umieść w głównej pętli, która powyższe instrukcje wykona np. sto czy tysiąc razy; Jednorazowy pomiar nie ma sensu, bo wynik może być oszukany.