#include <iostream>
#include <chrono>
#include <vector>
#include <type_traits>
struct S {
int hui;
double pizda;
short dzhigurda;
};
template <typename T> struct uninitialized_allocator {
using value_type = T;
template<typename U, typename... Args>
void construct(U * const ptr, Args&&... args) {}
T* allocate(size_t n) {
return allocator.allocate(n);
}
void deallocate(T* const ptr, size_t n) {
allocator.deallocate(ptr, n);
}
std::allocator<T> allocator;
};
int main() {
auto t = std::chrono::system_clock::now();
std::vector<S> v1(1000000);
std::cout << std::chrono::duration<double, std::milli>(std::chrono::system_clock::now() - t).count() << std::endl;
t = std::chrono::system_clock::now();
std::vector<S, uninitialized_allocator<S>> v2(1000000);
std::cout << std::chrono::duration<double, std::milli>(std::chrono::system_clock::now() - t).count() << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgpzdHJ1Y3QgUyB7CglpbnQgaHVpOwoJZG91YmxlIHBpemRhOwoJc2hvcnQgZHpoaWd1cmRhOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB1bmluaXRpYWxpemVkX2FsbG9jYXRvciB7Cgl1c2luZyB2YWx1ZV90eXBlID0gVDsKCgl0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBBcmdzPgoJdm9pZCBjb25zdHJ1Y3QoVSAqIGNvbnN0IHB0ciwgQXJncyYmLi4uIGFyZ3MpIHt9CgoJVCogYWxsb2NhdGUoc2l6ZV90IG4pIHsKCQlyZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKG4pOwoJfQoKCXZvaWQgZGVhbGxvY2F0ZShUKiBjb25zdCBwdHIsIHNpemVfdCBuKSB7CgkJYWxsb2NhdG9yLmRlYWxsb2NhdGUocHRyLCBuKTsKCX0KCglzdGQ6OmFsbG9jYXRvcjxUPiBhbGxvY2F0b3I7Cn07CgppbnQgbWFpbigpIHsKCQoJYXV0byB0ID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CglzdGQ6OnZlY3RvcjxTPiB2MSgxMDAwMDAwKTsKCXN0ZDo6Y291dCA8PCBzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlLCBzdGQ6Om1pbGxpPihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHQpLmNvdW50KCkgPDwgc3RkOjplbmRsOwoKCXQgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKCglzdGQ6OnZlY3RvcjxTLCB1bmluaXRpYWxpemVkX2FsbG9jYXRvcjxTPj4gdjIoMTAwMDAwMCk7CglzdGQ6OmNvdXQgPDwgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZSwgc3RkOjptaWxsaT4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgLSB0KS5jb3VudCgpIDw8IHN0ZDo6ZW5kbDsKCglyZXR1cm4gMDsKfQ==