Hei community,
У меня небольшой вопрос, касающийся удаления указателей.
Я работаю с матрицами указатель-указатель размера Dimension 1024x1024.Поскольку я создаю их динамически, я удаляю выделенное для них пространство в конце программы.Но выполнение этого в обычном цикле стоит довольно много времени - я измерял около 2 секунд, используя тактовую частоту процессора.И 2 секунды это ОГРОМНО, когда программа запускается всего 15 секунд - плюс: функция, использующая эти выделенные указатели, вызывается более одного раза ...
Вот измеренный кусок кода, критичный ко времени, включая измерение:
time=clock();
for(i=0;i<xSize;i++){ //xSize is dynamic, but 1024 for the measurement
delete [] inDaten[i];
delete [] inDaten2[i];
delete [] copy[i];
}
delete inDaten; delete inDaten2; delete copy;
time=clock()-time;
time/=CLOCKS_PER_SEC;
Является ли удаление указателей ВСЕГДА таким долгим?Или я просто поступаю неправильно?
Я надеюсь, что кто-то здесь может мне помочь с этим.Так как я оптимизирую довольно сложную программу для более быстрой работы, я не могу использовать этот 2-секундный фрагмент кода.Это просто СЛИШКОМ медленно, по сравнению со всеми остальными частями.Но все же мне нужно иметь возможность реализовать этот код динамически.SmartPointers могут быть полезны, но если я правильно понимаю, им также нужно время, чтобы удалить себя - просто в другое время ...
Спасибо за ваши ответы!
Барадрист
РЕДАКТИРОВАТЬ: я только что узнал, что измерение этих delete-вычислений довольно медленно, потому что я не компилировал его в режиме выпуска.Так как отладчик вступает в игру, я измерил эти (в конце концов нереальные) числа, от которых у меня разболелась голова.Последняя программа оптимизируется достаточно автоматически, так что удаление больше почти не занимает времени.
В любом случае: спасибо за все полезные ответы!Они принесли мне много дополнительных знаний и вещей для размышления !!!!