Версии 1.1 -> 1.3
Вот хочу поделится таким наблюдениями:
при переходе с версии 1.1 на 1.3 такой код
var
i, j: Integer;
l: TList;
begin
for i := 0 to 200000 do
begin
l := TList.Create;
try
l.Add(nil);
l.Add(nil);
l.Add(nil);
l.Delete(0);
l.Add(nil);
l.Delete(0);
l.Add(nil);
l.Delete(0);
l.Add(nil);
l.Delete(0);
l.clear;
finally
l.free;
end;
end;
end.
выполняется в два раза медленнее :-(
Можно проверить в стандартной демке от этих двух версий.
Хотя простые вычисления в циклах (те, что есть в примерах) в два раза быстрее.
IMHO операции с объектами в приложении гораздо чаще, чем чистая математика.
Смотрел в исходниках - думал что дело в CheckLateBinding, но нет - выключение дает очень маленькую прибавку.
Были изменения в fs_iexpression.pas - может там что ухудшилось ? (раньше был простой case в методе TfsOperatorNode.GetValue: Variant; теперь - куча наследников)
Что делать? Не хочется как-то переходить на медленную версию, но с хорошей работой с юнитами.
Кстати, а эти демки в одной версии дельфей собраны или нет?
при переходе с версии 1.1 на 1.3 такой код
var
i, j: Integer;
l: TList;
begin
for i := 0 to 200000 do
begin
l := TList.Create;
try
l.Add(nil);
l.Add(nil);
l.Add(nil);
l.Delete(0);
l.Add(nil);
l.Delete(0);
l.Add(nil);
l.Delete(0);
l.Add(nil);
l.Delete(0);
l.clear;
finally
l.free;
end;
end;
end.
выполняется в два раза медленнее :-(
Можно проверить в стандартной демке от этих двух версий.
Хотя простые вычисления в циклах (те, что есть в примерах) в два раза быстрее.
IMHO операции с объектами в приложении гораздо чаще, чем чистая математика.
Смотрел в исходниках - думал что дело в CheckLateBinding, но нет - выключение дает очень маленькую прибавку.
Были изменения в fs_iexpression.pas - может там что ухудшилось ? (раньше был простой case в методе TfsOperatorNode.GetValue: Variant; теперь - куча наследников)
Что делать? Не хочется как-то переходить на медленную версию, но с хорошей работой с юнитами.
Кстати, а эти демки в одной версии дельфей собраны или нет?
Комментарии
FastScriptDemo110.exe - теперь на ней получаю результаты в два раза быстрей.
Сейчас заново установил обе демки из дистрибутивов и вот какие результаты:
1.3 (FastScriptDemo130.exe дистрибутив)
результат: Executed in 3705 ms
1.1 (FastScriptDemo110.exe дистрибутив)
Executed in 3735 ms
1.1 (FastScriptDemo110.exe моя)
Executed in 1993 ms
Поразительное превосходство ;-)
1.3 моя
2423 ms - странно
>>Главное - тестировать примеры, скомпиленные одной версией Delphi, т.к. из-
>>за разницы в реализации Variants скорость может отличаться весьма
>>значительно
Точно