Re[2]: Как ускорить выделение большого куска памяти?
От: cures Россия cures.narod.ru
Дата: 16.11.14 20:30
Оценка:
Здравствуйте, smeeld, Вы писали:

S>что быстро выполниться при больших N не может.


Интересно, что этот construct делает, и можно ли его попросить этого не делать?
По крайней мере, new раньше спокойно оставлял примитивные типы неинициализированными, а vector так не умеет?

S>Да, делайте просто malloc() без этих stl дурковатостей.


Можно с придурковатостями, в shared_ptr засунуть, но после malloc
Другой вопрос — нужен ли в программе этот здоровый массив? Если его нулями заливает 10 минут, то какое время займёт его обычное использование? Если 10 минут — ничтожная доля в общем времени, то имеем классическую причину всех зол, по Кнуту. Если доля существенная, то массив как таковой практически не исползуется, только небольшие его участки, и его хорошо бы заменить на подходящую структуру меньшего размера.
А если его таки надо забить изначально нулями, то может быть проще его в .bss завести, система сама инициализирует, если умная — аппаратно. Ну или правда через OpenMP распараллелить, обычно в машине несколько каналов к памяти, может в несколько раз ускориться. Или memset позвать, вдруг он что-то знает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.