![]() |
![]() |
Bokul |
![]()
Сообщение
#1
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Реализовал объект многоугольник, который имеет неопределенное количество вершин. Но скорость работы с ним критическая, поэтому надо как можно сильнее его оптимизировать.
Вот, что он из себя представляет:
Кольцевой список
Модуль для работы с векторами
Программа для проверки минимальной работоспособности
Три модуля вмести: ![]() PS в принципе код прозрачен, но если что-то не понятно - спрашивайте. ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Хм... Чего тут пока оптимизировать - непонятно... Я бы сделал версию со статистикой (причем, используя директивы {$IFDEF}, хорошая статистика она никогда не помешает, но надо, чтоб ее можно было отключать быстро, а не переписывать из-за этого пол-программы), сколько раз какая функция/метод вызывается (если пойти чуть дальше - сколько времени в среднем выполняется каждый метод), и запустил бы эту версию, скажем, для нескольких сотен ( может, тысяч, все зависит от того, сколько времени ты согласен ждать ответа программы
![]() И вот когда программа тебе сообщит, что один метод вызывается 100 раз, а другой - 500000, ты будешь точно знать, на какой из них надо обращать внимание, а на какой - не очень... P.S. Цитата(Console) ... First contains second object Second is not inside first object Difference: -32768 ![]() Кстати, почему бы Increase/Decrease тоже не реализовать через ForEach? |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 11:59 |