Скорость работы
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 6
- Зарегистрирован: 19 дек 2004, 16:08
- Откуда: Москва
Есть такая проблемма. Сам решить не могу её. Программа на дэльфе 7. В программе основная процедура ведёт некоторые рассчёты. Эта процедура запускается порядка 10000 раз. Можно сказать, что входные параметры у неё одинаковы. Внутри процедуры нет никаких мэмори стримов, ссылок и прочего, способствующего утечкам памяти. Выделяются только простые переменные, типов integer, real, string. Но тем неменее, с каждым циклом процедура начинает работать всё медленнее, к концу работы программы каждая обработка может занимать на порядок больше времени, чем в начале.
С чем это может быть связанно? Дэльфю я особо хорошо не знаю, посути кодю, как кодил бы в паскале. Может там есть какая-нибудь команда, которая очищает область памяти где работала процедура и её запускать после каждого вызова надо?
С чем это может быть связанно? Дэльфю я особо хорошо не знаю, посути кодю, как кодил бы в паскале. Может там есть какая-нибудь команда, которая очищает область памяти где работала процедура и её запускать после каждого вызова надо?
Утечкам памяти могут способствовать только кривые руки.
А вопрос расчитан на телепата.
А вопрос расчитан на телепата.
-
- Сообщения: 6
- Зарегистрирован: 19 дек 2004, 16:08
- Откуда: Москва
Ладно. Можно поставить вопрос более конкретно.
Если я вызываю процедуру, внутри которой переменные объявляются только как integer, real, string, или массивы из них, причём задавая на вход процедуры одинаковый набор данных, то почему скорость исполнения процедуры замедляется при каждом её последующем вызове.
P.S.
раду буду услышать любые возможные теории)
Если я вызываю процедуру, внутри которой переменные объявляются только как integer, real, string, или массивы из них, причём задавая на вход процедуры одинаковый набор данных, то почему скорость исполнения процедуры замедляется при каждом её последующем вызове.
P.S.
раду буду услышать любые возможные теории)
Лучше покажи код.
-
- Сообщения: 6
- Зарегистрирован: 19 дек 2004, 16:08
- Откуда: Москва
там процедура порядка 700 строчек) к тому же она сопрягается с кучей остальных кусков проги)
Я курсовик пишу)
Я курсовик пишу)
Да покажи код, если действительно хочешь помощи. Без него все равно никто ничего не скажет
It's a long way to the top if you wanna rock'n'roll
Если уж не хочешь показывать код и хочешь определить факт утечки памяти, три кнопки и дыбай в поле "память" 

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
вот прям так 700 строк сплошной арифметики???

Замеряй используемую память до и после вызова своей процедуры.
И не факт что в остальных кусках твоей проги нет утечки
И не факт что в остальных кусках твоей проги нет утечки
Всё об отдыхе на http://chugaga.com
Кстати, да. Если дело происходит в Pascal-е, то есть функции MemAvail и MaxAvail.mobius писал(а):Замеряй используемую память до и после вызова своей процедуры.
И не факт что в остальных кусках твоей проги нет утечки