Dieser Code dauert etwa 20 Sekunden in meinem VS2012, aber nur 1.x Sekunden in G ++. Beide in Win8 x64 und mit Standardoptionen kompiliert.Warum list :: push_back viel langsamer in VC++ als g ++?
list<double> items;
for(int i=0;i<10000000;i++){
items.push_back(rand());
}
cout<<"done"<<endl;
Geht es um Speicherzuweisung? Es dauert 3 ~ 5 Sekunden, um den Speicher nach der Ausgabe in VC++ auf meinem Rechner freizugeben, und sogar mehr als 1 Minute in meinem Firend (win7 x64).
Ich bin nicht sicher, was die Standard-Build-Konfiguration für G ++ ist, aber für Visual Studio ist es ** DEBUG ** und Sie möchten die Leistung der Debug-Builds nicht vergleichen – emartel
Wie kompiliert man mit Release in VS und -O2 Option mit gcc? – nhahtdh
haben Sie versucht, 'items.reserve (10000000)' direkt vor der Schleife zu machen? –