Aufgrund von Leistungsproblemen auf einem Projekt, das ich das folgende Testprogramm gemacht (auch verschiedene Variablen für die Plausibilitätsprüfung verwendet):localtime() nimmt 24-mal mehr als gmtime() Leistungsproblem auf Linux
int main()
{
struct tm *timeinfo;
time_t rawtime;
clock_t begin, end, begin1, end1,begin2,end2;
double time_spent;
begin = clock();
for (int i = 0; i < 1000000; i++){
time (&rawtime);
timeinfo = localtime(&rawtime);
}
end = clock();
time_spent = (double)(end - begin)/CLOCKS_PER_SEC;
printf("Time elapsed using localtime() : %fs\n", time_spent);
//--------------------------------
begin1 = clock();
for (int i = 0; i < 1000000; i++){
time (&rawtime);
timeinfo = gmtime(&rawtime);
}
end1 = clock();
time_spent = (double)(end1 - begin1)/CLOCKS_PER_SEC;
printf("Time elapsed using gmtime() : %fs\n", time_spent);
//--------------------------------
begin2 = clock();
for (int i = 0; i < 1000000; i++){
time (&rawtime);
localtime_r(&rawtime, timeinfo);
}
end2 = clock();
time_spent = (double)(end2 - begin2)/CLOCKS_PER_SEC;
printf("Time elapsed using localtime_r() : %fs\n", time_spent);
return 0;
}
Die Ergebnisse ich werde es sehr seltsam, Lokalzeit dauert ~ 24-mal mehr Zeit, die localtime_r() Funktion scheint weniger als Lokalzeit zu nehmen(), aber noch viel mehr als gmtime():
Time elapsed using localtime() : 0.958033s
Time elapsed using gmtime() : 0.038769s
Time elapsed using localtime_r() : 0.860276s
ich es kompiliert haben mit gcc 5 sowie 4.x Version habe ich linux Mint (aktualisiert bis heute) und Cen verwendet tOS5. Auch wurde es auf verschiedenen physischen Maschinen getestet und der Leistungsunterschied ist ähnlich.
Warum gibt es so einen (großen) Leistungsunterschied?
_Diese zwei Funktion ist ähnlich _... die Tatsache, dass sie ähnliche Werte nicht zurück, dass die Umsetzung bedeutet das gleiche .... – LPs
ich die Performance-Unterschied bedeutete ähnlich ist, ich habe bearbeitet den Text, um es mehrdeutig zu machen. – miguels
Was ist Ihre Frage? Ich sehe keinen. – immibis