Re[8]: Оптимизация через разделение/вынос функционала
От: swame  
Дата: 22.06.24 17:25
Оценка: +1
Здравствуйте, 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% времени работы.
Отредактировано 22.06.2024 17:54 swame . Предыдущая версия . Еще …
Отредактировано 22.06.2024 17:44 swame . Предыдущая версия .
Отредактировано 22.06.2024 17:43 swame . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.