Я, конечно, дико извиняюсь...
Вот есть код:
Код:
MODULE WladTest;
IMPORT
StdLog,
WinApi,
Kernel,
Services;
(**************************************************************************)
CONST
MAX_COUNT = 10000000; (* <<< 1 <<< *)
(*MAX_COUNT = 100000000;*) (* <<< 2 <<< *)
(**************************************************************************)
TYPE
Class = POINTER TO RECORD
i : INTEGER;
d : REAL;
c : Class;
END;
(**************************************************************************)
PROCEDURE Test*;
VAR
i : INTEGER;
ticks : LONGINT;
c, c1 : Class;
BEGIN
(*Kernel.Collect;*)
c := NIL;
StdLog.Ln; StdLog.String("starting loop..."); StdLog.Ln;
ticks := Services.Ticks();
FOR i := 1 TO MAX_COUNT DO
NEW(c1); c1.i := 100; c1.d := 1000.0; c1.c := c;
c := c1;
END;
StdLog.String("...finished. time spent(ticks): "); StdLog.Int( Services.Ticks() - ticks ); StdLog.Ln;
END Test;
END #WladTest.Test
#Kernel.Collect
С таким значением количества итераций у меня на машине он выполняется (при раскомментированном Kernel.Collect;) где-то в пределах 953 – 1098 миллисекунд. При увеличении верхней границы цикла на порядок машина задумывается, начинает тарахтеть винтом... и с чем я совершенно согласен! Не согласен я с тем, что мне приходится перегружать снимать весь ББ с выполнения. К пресловутому Ctrl-Break ББ холоден... :о) :о(