| Bokul |
26.12.2006 9:32
Сообщение
#1
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Реализовал объект многоугольник, который имеет неопределенное количество вершин. Но скорость работы с ним критическая, поэтому надо как можно сильнее его оптимизировать.
Вот, что он из себя представляет:
Кольцевой список
Модуль для работы с векторами
Программа для проверки минимальной работоспособности
Три модуля вмести:
Polygone.rar ( 13.71 килобайт )
Кол-во скачиваний: 447PS в принципе код прозрачен, но если что-то не понятно - спрашивайте. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
![]() ![]() |
| volvo |
26.12.2006 20:05
Сообщение
#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 |
Bokul Многоугольник 26.12.2006 9:32
volvo Хм... Чего тут пока оптимизировать - непонятно... ... 26.12.2006 9:59
Bokul
Да, правильно - так и надо, сделаем...
Как в... 26.12.2006 19:32
Bokul
:blink: И программу проверки мою???
Я не ... 26.12.2006 20:22
Bokul
Я имею ввиду при каких данных происходит такая ... 26.12.2006 21:28
volvo При твоих... Copy+Paste из твоего первого сообщени... 26.12.2006 21:41
Bokul
Точно, почему я сам это не увидел :blink: Само... 26.12.2006 22:18
Bokul Попытался добавить статистику, но как-то не сильно... 27.12.2006 7:50
volvo Чего-то ты переусложнил по-моему работу со статист... 29.12.2006 13:01
Bokul
Красиво :wink: Единственный вопрос - как называ... 29.12.2006 20:56![]() ![]() |
|
Текстовая версия | 8.12.2025 11:59 |