Засечь время выполнения цикла на Delphi
Программа исполняет элементарное: вводятся числа в строку (массив значений), потом вводится искомое значение. Программа находит это число в массиве и выводит сообщение, иначе она говорит что такого числа нет.
Код:
unit s_found_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Edit2: TEdit;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ поиск в массиве перебором }
procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=5;
var
a: array[1..SIZE] of integer; // массив
obr: integer; // образец для поиска}
found: boolean; // TRUE - совпадение образца с элементом массива }
i: integer; // индекс элемента массива }
begin
// ввод массива
for i:=1 to SIZE do
a := StrToInt(StringGrid1.Cells[i-1,0]);
// ввод образца для поиска
obr := StrToInt(edit2.text);
// поиск
found := FALSE; // пусть нужного эл-та в массиве нет
i := 1;
repeat
if a = obr
then found := TRUE
else i := i+1;
until (i > SIZE) or (found = TRUE);
if found
then ShowMessage('Совпадение с элементом номер '
+IntToStr(i)+#13+'Поиск успешен.')
else ShowMessage('Совпадений с образцом нет.');
end;
end.
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Edit2: TEdit;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ поиск в массиве перебором }
procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=5;
var
a: array[1..SIZE] of integer; // массив
obr: integer; // образец для поиска}
found: boolean; // TRUE - совпадение образца с элементом массива }
i: integer; // индекс элемента массива }
begin
// ввод массива
for i:=1 to SIZE do
a := StrToInt(StringGrid1.Cells[i-1,0]);
// ввод образца для поиска
obr := StrToInt(edit2.text);
// поиск
found := FALSE; // пусть нужного эл-та в массиве нет
i := 1;
repeat
if a = obr
then found := TRUE
else i := i+1;
until (i > SIZE) or (found = TRUE);
if found
then ShowMessage('Совпадение с элементом номер '
+IntToStr(i)+#13+'Поиск успешен.')
else ShowMessage('Совпадений с образцом нет.');
end;
end.
Логику вычисления время исполнения скрипта я знаю. По идее надо засечь кол-во секунд, прошедших с начала эпохи + доли текущей секунды до цикла, и после. Потом вычесть значения и получим искомое.
Аналог в php такой функции - microtime(). К сожалению в Delphi я чего-то не могу найти такой функции. Просьба посодействовать в поиске такой функции.
Так же просьба высказать свои предложения и методы тестирования циклов. Очень срочно надо
http://forum.codenet.ru/showpost.php?p=172993&postcount=12 может поможет. несмотря на то, что там на Free Pascal на Delphi тоже самое будет.
глянь это
GetTickCount;
Код:
Application.ProcessMessages;
QueryPerformanceCounter(Start);
// тут цикл
QueryPerformanceCounter(Finish);
WaitCal := Finish - Start;
QueryPerformanceCounter(Start);
// тут цикл
QueryPerformanceCounter(Finish);
WaitCal := Finish - Start;
Теперь просто советы хочу спросить о том какие тесты можно проводить над циклом???