Версии 1.1 -> 1.3

SAASAA
отредактировано 13:04 Раздел: FastScript
Вот хочу поделится таким наблюдениями:
при переходе с версии 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; теперь - куча наследников)

Что делать? Не хочется как-то переходить на медленную версию, но с хорошей работой с юнитами.

Кстати, а эти демки в одной версии дельфей собраны или нет?

Комментарии

  • отредактировано 13:04
    Не знаю, откуда взялись такие цифры - я тестировал 1.0-1.3 на тех скриптах, что в папке Benchmarks (там есть и работа с объектами), версия 1.3 быстрее во всех случаях. Главное - тестировать примеры, скомпиленные одной версией Delphi, т.к. из-за разницы в реализации Variants скорость может отличаться весьма значительно.
  • SAASAA
    отредактировано 13:04
    Кажется я понял в чем дело, видимо, я когда-то давно перекомпилил
    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 скорость может отличаться весьма
    >>значительно
    Точно

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.