![]() |
![]() |
Bokul |
![]()
Сообщение
#1
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Реализовал объект многоугольник, который имеет неопределенное количество вершин. Но скорость работы с ним критическая, поэтому надо как можно сильнее его оптимизировать.
Вот, что он из себя представляет:
Кольцевой список
Модуль для работы с векторами
Программа для проверки минимальной работоспособности
Три модуля вмести: ![]() PS в принципе код прозрачен, но если что-то не понятно - спрашивайте. ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата где у тебя произошла такая утечка? ![]() У меня? Я запустил только твою программу, буква в букву, как ты ее привел, так что утечка - у тебя... Цитата Как в Fpc засекать время? uses windows;Я думаю, этого будет достаточно, если сделать огромное количество вычислений... Можно, конечно, и поточнее время замерять, но с этим, я думаю, не стОит заморачиваться... Цитата А почему без ForEach - для этого процедуре надо передавать еще один параметр - вектор, но ForEach работает только с таким типом Ну, во-первых, перегрузку функций еще никто не отменял, ты не в TP, а в ObjectPascal-е, кстати, можно было бы и перегрузить, если, конечно, такие функции будут вызываться достаточно часто... А во-вторых,Цитата Вообще то сначала они у меня были в виде перегруженных операторов (+-), но никак не получалось заставить их правильно работать - показывай, как перегружал, у меня после добавления перегрузки operator + (const p: TPoint; const v: TVector) R: TPoint;в модуль UnitTVector вот такой код: procedure TPolygone.Decrease(Const Vector:TVector);отрабатывает без проблем... Кстати, это тебе хинт, как немного оптимизировать программу, вместо того, чтоб каждый раз брать List^.Last^.next, берешь его один раз, и сравниваешь с текущим значением P ![]() |
![]() ![]() |
![]() |
Текстовая версия | 8.08.2025 9:43 |