#include <iostream>
#include <vector>
#include <string>
#include <chrono>
using namespace std;
class MyObject {
public:
MyObject(string Str) : m_Str(Str) { }
string m_Str;
};
int main() {
chrono::time_point<chrono::system_clock> tstart, tend;
chrono::duration<double> tt;
tstart = chrono::system_clock::now();
vector<MyObject> VectorOfObjects;
for (int i=0; i<10000; i++) {
MyObject x("test");
VectorOfObjects.push_back(x);
}
tend = chrono::system_clock::now();
tt = tend-tstart;
cout << "Pushback Object: " << tt.count()*1000 << " Milliseconds\n" << endl;
tstart = chrono::system_clock::now();
vector<MyObject *> VectorOfPointers;
for (int i=0; i<10000; i++) {
VectorOfPointers.push_back(new MyObject("test"));
}
tend = chrono::system_clock::now();
tt = tend-tstart;
cout << "Pushback Pointers: " << tt.count()*1000 << " Milliseconds\n" << endl;
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNocm9ubz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpjbGFzcyBNeU9iamVjdCB7CnB1YmxpYzoKCU15T2JqZWN0KHN0cmluZyBTdHIpIDogbV9TdHIoU3RyKSB7IH0KCQoJc3RyaW5nIG1fU3RyOwp9OwoKaW50IG1haW4oKSB7CgljaHJvbm86OnRpbWVfcG9pbnQ8Y2hyb25vOjpzeXN0ZW1fY2xvY2s+IHRzdGFydCwgdGVuZDsKCWNocm9ubzo6ZHVyYXRpb248ZG91YmxlPiB0dDsKCQoKCgoKCgl0c3RhcnQgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CgoJdmVjdG9yPE15T2JqZWN0PiBWZWN0b3JPZk9iamVjdHM7Cglmb3IgKGludCBpPTA7IGk8MTAwMDA7IGkrKykgewoJCU15T2JqZWN0IHgoInRlc3QiKTsKCQlWZWN0b3JPZk9iamVjdHMucHVzaF9iYWNrKHgpOwoJfQoKCXRlbmQgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7Cgl0dCA9IHRlbmQtdHN0YXJ0OwoJY291dCA8PCAiUHVzaGJhY2sgT2JqZWN0OiAiIDw8IHR0LmNvdW50KCkqMTAwMCA8PCAiIE1pbGxpc2Vjb25kc1xuIiA8PCBlbmRsOwoJCgkKCgoKCgoJdHN0YXJ0ID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpOwoKCXZlY3RvcjxNeU9iamVjdCAqPiBWZWN0b3JPZlBvaW50ZXJzOwoJZm9yIChpbnQgaT0wOyBpPDEwMDAwOyBpKyspIHsKCQlWZWN0b3JPZlBvaW50ZXJzLnB1c2hfYmFjayhuZXcgTXlPYmplY3QoInRlc3QiKSk7Cgl9CgoJdGVuZCA9IGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKCXR0ID0gdGVuZC10c3RhcnQ7Cgljb3V0IDw8ICJQdXNoYmFjayBQb2ludGVyczogIiA8PCB0dC5jb3VudCgpKjEwMDAgPDwgIiBNaWxsaXNlY29uZHNcbiIgPDwgZW5kbDsKCgoKCXJldHVybiAwOwp9CgoK