хочу хранить в векторе некоторые структуры,(много). Интересует вопрос почему такой код работает быстрее
struct A{
uint64_t a1;
uint8_t a2[12];
};
{
std::vector<A> *stdArray = new std::vector<A>;
A temp;
stdArray->reserve(SIZE);
for(int ind=0;ind<SIZE;++ind){
temp.a1= ind;
stdArray->push_back(temp);
}
}
Чем такой:
{
std::vector<A*> *stdArray = new std::vector<A*>;
stdArray->reserve(SIZE);
for(int ind=0;ind<SIZE;++ind)
stdArray->push_back(new A());
}
В первом случае вызывается конструктор копирования а во втором нет, почему первое быстрее?
И еще вопрос, пытаюсь выделить память под ~20000000 элементов QVector крашит программу с ошибкой выделения памяти, 32х компилятор MinGW, при этом std vector работает но медленнее, не пытаюсь выделить памяти больше разрешенных на 32х битах, никто не сталкивался? Почему QVector не хочет хранить столько же данных как std vector?
Менеджер памяти - не самая быстрая система, так что основные потери времени у вас на
new A()
Конкретнее - на выделении памяти, обновлении массы служебных структур менеджера памяти и т.п., что по времени выполняется дольше, чем простое копирование 20 байт...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Для одного функционала требуется сделать ротатор изображений, но не по обычному таймауту, а по таймауту после загрузки и показа изображения,...
Помогите пожалуйста с идеей, есть верстка, в очень упрощенном виде так: