Скорость работы

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Wormkeeper
Сообщения: 6
Зарегистрирован: 19 дек 2004, 16:08
Откуда: Москва

02 дек 2007, 17:39

Есть такая проблемма. Сам решить не могу её. Программа на дэльфе 7. В программе основная процедура ведёт некоторые рассчёты. Эта процедура запускается порядка 10000 раз. Можно сказать, что входные параметры у неё одинаковы. Внутри процедуры нет никаких мэмори стримов, ссылок и прочего, способствующего утечкам памяти. Выделяются только простые переменные, типов integer, real, string. Но тем неменее, с каждым циклом процедура начинает работать всё медленнее, к концу работы программы каждая обработка может занимать на порядок больше времени, чем в начале.
С чем это может быть связанно? Дэльфю я особо хорошо не знаю, посути кодю, как кодил бы в паскале. Может там есть какая-нибудь команда, которая очищает область памяти где работала процедура и её запускать после каждого вызова надо?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

02 дек 2007, 17:49

Утечкам памяти могут способствовать только кривые руки.
А вопрос расчитан на телепата.
Wormkeeper
Сообщения: 6
Зарегистрирован: 19 дек 2004, 16:08
Откуда: Москва

02 дек 2007, 17:57

Ладно. Можно поставить вопрос более конкретно.
Если я вызываю процедуру, внутри которой переменные объявляются только как integer, real, string, или массивы из них, причём задавая на вход процедуры одинаковый набор данных, то почему скорость исполнения процедуры замедляется при каждом её последующем вызове.
P.S.
раду буду услышать любые возможные теории)
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

02 дек 2007, 20:33

Лучше покажи код.
Wormkeeper
Сообщения: 6
Зарегистрирован: 19 дек 2004, 16:08
Откуда: Москва

02 дек 2007, 20:36

там процедура порядка 700 строчек) к тому же она сопрягается с кучей остальных кусков проги)
Я курсовик пишу)
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

02 дек 2007, 21:44

Да покажи код, если действительно хочешь помощи. Без него все равно никто ничего не скажет
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Insane
Сообщения: 5
Зарегистрирован: 28 ноя 2007, 03:08

03 дек 2007, 03:52

Если уж не хочешь показывать код и хочешь определить факт утечки памяти, три кнопки и дыбай в поле "память" :)
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

03 дек 2007, 11:59

вот прям так 700 строк сплошной арифметики???
Изображение
mobius
Сообщения: 151
Зарегистрирован: 25 янв 2005, 18:42
Откуда: Минск
Контактная информация:

03 дек 2007, 18:42

Замеряй используемую память до и после вызова своей процедуры.

И не факт что в остальных кусках твоей проги нет утечки
Всё об отдыхе на http://chugaga.com
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

04 дек 2007, 10:28

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