Trädvy Permalänk
Medlem
Registrerad
Sep 2009

Python || time || time.time()

Hej kära Swe.

Så jag sitter och gör lite mätningar "benchmarking" om ni så vill, med python 2.7.x. Då står det i dokumentation att time.clock() (process tid (Dvs mäter när processen körs och pausear när den är i viloläge)) är bättre för att mäta "algorithmer...". Men då jag inte inte fått time.clock() att fungera mellan olika "applikationer" (självförklarande varför) så har jag använt mig av time.time() (vilket är så kallad "wall tid"). Men jag lyckas inte få fram något med mina googlingar hur precis time.time är eller va den baserar detta på.

Är det någon som vet hur jag kan få ut vilken precision time.time() har på just den datorn jag testar på?

Tack för svar!

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

Dokumentationen förklarar väl detta ganska bra tycker jag:

Citat:

Return the time in seconds since the epoch as a floating point number. Note that even though the time is always returned as a floating point number, not all systems provide time with a better precision than 1 second. While this function normally returns non-decreasing values, it can return a lower value than a previous call if the system clock has been set back between the two calls.

Trädvy Permalänk
Medlem
Registrerad
Sep 2009

Nja inte riktigt, de säger att inte alla system har bättre precision än 1 sekund. Men de säger ju fortfarande inte hur man vet om det system man sitter på har det eller ej.

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Trädvy Permalänk
Datavetare
Plats
Stockholm
Registrerad
Jun 2011

Varför inte använda modulen timeit för detta?

Går annars alltid att skriva ett program som i alla fall får ut en övre gräns på upplösning av time.time(). Skriv bara ett program som anropar funktionen en gång och sedan anropar den fram till att man får ett annat värde jämfört med första anropet. Upplösningen är minst skillnaden mellan dessa (men kan vara högre).

Skulle gissa att man på Windows använder QueryPerformanceCounter och på Linux använder clock_gettime() vilket på moderna PC betyder en upplösning på 1 nanosekund.

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Trädvy Permalänk
Medlem
Registrerad
Sep 2009

Jo, för jag inte hade sätt det. Men då vet jag ju va jag kommer kolla in ikväll.

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6