Hallo,
ich hab zur Ermittlung der Stunde des Tages aus dem Unixstempel die Performance zwischen struct tm und modulo vergleichen. Von 0 bis heute iteriert (mit volatile). Modulo ist nach meiner Messung 77x schneller als struct tm. Für mich ist damit klar das ich modulo nutzen will.
Um zu prüfen ob Modulo und struct tm übereinstimmen hab ich was geschrieben und natürlich stimmt es nicht überein wegen der Sommerzeit die struct tm scheinbar einbezieht. Jetzt ist der Zeitstempel UTC und +1 wäre MEZ und für Sommer also MESZ bräuchte man +2.
Wie findet man per modulo raus ob Sommerzeit ist oder nicht?
Ziel wäre eine Lösung sodass nach der Schleife die variable "keineuebereinstimmung" auf 0 steht also struct tm und die modulo variante immer das gleiche rausgeben. Hat jemand eine Idee? dann könnte ich struct tm endlich ad acta legen
Gruß
ich hab zur Ermittlung der Stunde des Tages aus dem Unixstempel die Performance zwischen struct tm und modulo vergleichen. Von 0 bis heute iteriert (mit volatile). Modulo ist nach meiner Messung 77x schneller als struct tm. Für mich ist damit klar das ich modulo nutzen will.
Um zu prüfen ob Modulo und struct tm übereinstimmen hab ich was geschrieben und natürlich stimmt es nicht überein wegen der Sommerzeit die struct tm scheinbar einbezieht. Jetzt ist der Zeitstempel UTC und +1 wäre MEZ und für Sommer also MESZ bräuchte man +2.
Wie findet man per modulo raus ob Sommerzeit ist oder nicht?
Ziel wäre eine Lösung sodass nach der Schleife die variable "keineuebereinstimmung" auf 0 steht also struct tm und die modulo variante immer das gleiche rausgeben. Hat jemand eine Idee? dann könnte ich struct tm endlich ad acta legen
Gruß
Code:
#include <iostream>
#include <time.h>
int main()
{
time_t endzeit = 1494172759;
struct tm *tmnow;
time_t z = 0;
time_t stunde_modulo;
time_t stunde_tm;
time_t uebereinstimmung = 0;
time_t keineuebereinstimmung = 0;
while(endzeit>z)
{
stunde_modulo = ((z % 86400)/3600)+1;
tmnow = localtime(&z);
stunde_tm = tmnow->tm_hour;
if(stunde_modulo == stunde_tm)
{
uebereinstimmung++;
}
else
{
keineuebereinstimmung++;
}
// std::cout << stunde_tm << " " << stunde_modulo << std::endl;
z++;
}
std::cout << "uebereinstimmung " << uebereinstimmung << std::endl;
std::cout << "keineuebereinstimmung " << keineuebereinstimmung << std::endl;
return 0;
}