Информация об изменениях

Сообщение Re[8]: Оптимизация через разделение/вынос функционала от 22.06.2024 17:25

Изменено 22.06.2024 17:43 swame

Re[8]: Оптимизация через разделение/вынос функционала
Здравствуйте, Khimik, Вы писали:

K>Здравствуйте, swame, Вы писали:


S>> tdoublearray = class (TList<double>)


K>Сорри, что такое TList<double> ? Я попробовал это задать, подключил модуль system.classes и там можно сослаться только на просто tlist, т.е. это старый класс из Delphi7, без дженериков. А какой у вас Delphi?


System.Generics.Collections
поддерживается с Delphi 2009

K>Вы посмотрите, как в вашем TList обрабатывается SetCapacity — полагаю массив заполняется нулями, а это заведомо тормозит алгоритм.


ну посмотри если интересно, думаю едва ли больше 1% времени работы.
Re[8]: Оптимизация через разделение/вынос функционала
Здравствуйте, Khimik, Вы писали:

K>Здравствуйте, swame, Вы писали:


S>> tdoublearray = class (TList<double>)


K>Сорри, что такое TList<double> ? Я попробовал это задать, подключил модуль system.classes и там можно сослаться только на просто tlist, т.е. это старый класс из Delphi7, без дженериков. А какой у вас Delphi?


System.Generics.Collections
поддерживается с Delphi 2009
Эти контейнеры развиваются от версии к версии, собранные более поздними версиями могут работать существенно быстрее, возможно в разы.
Есть такой чувак Дмитрий Мозулев, он раньше он был фанатом оптимизации, у него есть библиотека Rapid.Generics,
можно найти на гитхабе, в прежние времена (десятые года)его контейнеры обгоняли стандартные контейнеры Delphi в 2-4,
в отличие от тебя прекрасно знает нутрянку Delphi и действительно в отличие от тебя может написать оптимизированнынй алгоритм.
НО последние годы стандартные контейнеры Delphi были хорошо оптимизированы и видимо догнали его контейнеры, я давно не тестил.
Теперь нет смысла оптимизировать, уже видимо оптимизировано близко к пределу.

K>Вы посмотрите, как в вашем TList обрабатывается SetCapacity — полагаю массив заполняется нулями, а это заведомо тормозит алгоритм.


ну посмотри если интересно, думаю едва ли больше 1% времени работы.