Цитата:
Сообщение от alexsl
вообщем простой тест:
- P4 1,7 512 mb
- l2ph 3.2.0 (Test Init)
- paxScript IDE (Run -> F9)
delphi Код:
procedure Init; //Вызывается при включении скрипта
var
i, k: Integer;
t,r: double;
begin
t := time();
k := 1;
for i := 0 to 200000 do
k := StrToInt(IntToStr(i));
r:= (time() - t)/1000;
showmessage(floattostr(r));
end;
- код в paxScript IDE
delphi Код:
uses SysUtils,dialogs;
var
i, k: Integer;
t,r: double;
begin
t := time();
k := 1;
for i := 0 to 200000 do
k := StrToInt(IntToStr(i));
r:= (time() - t)/1000;
showmessage(floattostr(r));
end.
-------------------------------------------
результаты:
- l2phx: 1,4282 1,4282 1,4282
- Pax: 2,9837 3,0196 2,9293
------------------------------------------
результаты грят сами за себя.
зы: не совсем ясно с paxScript IDE, возможно при каждом запуске идет компиляция
|
твоё сравнение немного некорректно, дело в том что IntToStr и StrToInt в FastScript встроенные функции, а в paxScript они добавляются, из за этого и такая разница в скорости, но в paxScript есть встроенные аналоги этих функций, и вот такой скрипт в paxScript работает абсрлютно так же как и твой но чуть бустрее чем FastScript:
delphi Код:
uses SysUtils,dialogs;
var
i, k: Integer;
t,r: double;
begin
t := time();
k := 1;
for i := 0 to 200000 do
k := Integer(String(i));
r:= (time() - t)*86400000;
showmessage(String(r));
end.
ну и для FastScript тоже исправил чтоб отображалось количество милисекунд а не непонятное число:
delphi Код:
procedure Init; //Вызывается при включении скрипта
var
i, k: Integer;
t,r: double;
begin
t := time();
k := 1;
for i := 0 to 200000 do
k := StrToInt(IntToStr(i));
r:= (time() - t)*86400000;
showmessage(floattostr(r));
end;
begin
end.
в результате этих изменений результаты тестирования такие:
paxScript: 531 мс, 515 мс, 547 мс
FastScript: 577 мс, 625 мс, 594 мс
результат на лицо)
ЗЫ процессор - AMD Athlon 64 3800+
Добавлено через 12 минут
кстати небольшое разяснение навсякий случай:
String(x) - возвращает результат преобразования x в строку, чем бы x не было изначально, тоесть
если x: Integer = 12, то String(x) = '12'
если x: Double = 52.4234, то String(x) = '52.4234'
тоесть она заменяет наверное почти все ...ToStr функции
аналогично и Integer(x) преобразует x из почти чего угодно в целое число, x может быть и строкой типа '342' и дробным числом, от которого обрежиться дробная часть...