Oggi ho scaricato e creato un progetto di esempio dell'implementazione STL di Electronic Arts e il vettore di EA mi sembra molto più lento dello standard. Ho appena creato 2 vettori e caricarli con 1 milione di oggetti:EASTL performance
void performance_test(void)
{
clock_t start;
clock_t end;
// EA
eastl::string strEA = "hello";
eastl::vector<eastl::string> vec_EA;
start = clock();
for (size_t i = 0; i < 1000000; i++)
{
vec_EA.push_back(strEA);
}
end = clock();
printf("EA %f\n", (double(end - start)/1000));
// Standard
std::string strStandard = "hello";
std::vector<std::string> vec_Standard;
start = clock();
for (size_t i = 0; i < 1000000; i++)
{
vec_Standard.push_back(strStandard);
}
end = clock();
printf("Standard %f\n", (double(end - start)/1000));
}
ei risultati sono:
- EA 0,759 mila
- standard 0,064000
Quindi, c'è qualcosa cosa sto sbagliando o mi sono perso qualcosa? L'esempio è stato compilato con il set di strumenti della piattaforma v100.
Perché hai taggato C? La libreria standard del compilatore può essere ottimizzata appositamente per quel compilatore. Non sono sicuro che dovrebbe essere quell'ordine di grandezza, comunque. Cos'è il set di strumenti della piattaforma v100? –
Non sono sicuro che mi piacerebbe l'orologio per i tempi, ma quando la differenza è così grande, dovrebbe essere OK. Vale la pena provare un vettore EASTL con una stringa standard e viceversa, per restringere il problema. –
@MarkRansom: Hmm. Il vettore EA con una stringa standard è più veloce del vettore standard, ma la stringa non dovrebbe essere anche più veloce? – CsOkemf