// Obtenha precisão do tempo de Millissegund-Level (Método 1):
var
T1, T2: INT64;
R1: Int64;
Começar
T1: = getTickCount; // Comece a contar a API do Windows
sono (1000); {do ...} // execute o código a ser cronometrado
T2: = getTickCount; // Obtenha o valor da contagem final
r1: = t2-t1; // Obtenha o tempo de tempo, unidade milissegundos (ms)
showMessage (inttostr (R1));
fim;
// Obtenha a precisão do tempo de Millissegund-Level (Método 2):
// Use DateUtils; // Unidade de referência DateUtils
var
T1, T2: TDATETIME;
R1: Int64;
Começar
T1: = agora (); // Obtenha a hora de início
sono (1000); {do ...} // execute o código a ser cronometrado
T2: = agora (); // Obtenha o horário de término
r1: = segundos entre (t2, t1); // Obtenha o tempo de tempo, unidade (s) (s) (s) unidade (s)
r1: = milissegundsbetween (t2, t1); // Obtenha o tempo de tempo, unidade milissegundos (ms)
showMessage (inttostr (R1));
fim;
// Nota: Após testar os dois métodos acima, parece que eles podem produzir apenas 0,01 segundos de precisão de tempo após o teste sozinho.
// Get System-Level Time Accuracy:
var
C1: Int64;
T1, T2: INT64;
R1: Double;
Começar
QueryPerFormentFrequency (C1); // API do Windows retorna a frequência de contagem (Intel86: 1193180) (obtém o número de vibrações do contador de frequência de alta eficiência do sistema em um milissegundo)
QueryPerformAncecounter (T1); // API do Windows obtém o valor de contagem inicial
sono (1000); {do ...} // execute o código a ser cronometrado
QueryPerformAncecounter (T2); // Obtenha o valor da contagem final
R1: = (T2-T1)/C1; // Obtenha o tempo de tempo, unidade (s) (s) unidade (s)
R1: = (T2-T1)/C1*1000; // Obtenha o tempo de tempo, unidade milissegundos (ms)
R1: = (T2-T1)/C1*1000000; // Obtenha o tempo de tempo, unidade microssegundos
ShowMessage (Floattostr (R1));
fim;