PEP 418: Replace "Resolution" column with "C Resolution", and "Precision" with

"OS Resolution"

Document also these two columns.
This commit is contained in:
Victor Stinner 2012-04-24 00:24:08 +02:00
parent 464a098160
commit 94fb568222
1 changed files with 151 additions and 128 deletions

View File

@ -912,43 +912,48 @@ Operating system time functions
Monotonic Clocks Monotonic Clocks
---------------- ----------------
========================= ========== =============== ============= =============== ========================= ============ =============== ============= ===============
Name Resolution Adjusted Include sleep Include suspend Name C Resolution Adjusted Include Sleep Include Suspend
========================= ========== =============== ============= =============== ========================= ============ =============== ============= ===============
gethrtime() 1 ns No Yes Yes gethrtime() 1 ns No Yes Yes
CLOCK_HIGHRES 1 ns No Yes Yes CLOCK_HIGHRES 1 ns No Yes Yes
CLOCK_MONOTONIC 1 ns Slewed on Linux Yes No CLOCK_MONOTONIC 1 ns Slewed on Linux Yes No
CLOCK_MONOTONIC_COARSE 1 ns Slewed on Linux Yes No CLOCK_MONOTONIC_COARSE 1 ns Slewed on Linux Yes No
CLOCK_MONOTONIC_RAW 1 ns No Yes No CLOCK_MONOTONIC_RAW 1 ns No Yes No
CLOCK_BOOTTIME 1 ns ? Yes Yes CLOCK_BOOTTIME 1 ns ? Yes Yes
CLOCK_UPTIME 1 ns No Yes ? CLOCK_UPTIME 1 ns No Yes ?
mach_absolute_time() 1 ns No Yes No mach_absolute_time() 1 ns No Yes No
QueryPerformanceCounter() \- No Yes ? QueryPerformanceCounter() \- No Yes ?
GetTickCount[64]() 1 ms No Yes Yes GetTickCount[64]() 1 ms No Yes Yes
timeGetTime() 1 ms No Yes ? timeGetTime() 1 ms No Yes ?
========================= ========== =============== ============= =============== ========================= ============ =============== ============= ===============
The "C Resolution" column is the resolution of the underlying C
structure.
Examples of clock precision on x86_64: Examples of clock precision on x86_64:
========================= ================ ========= ================= ========================= ================ ============= =================
Name Operating system Precision Python Resolution Name Operating system OS Resolution Python Resolution
========================= ================ ========= ================= ========================= ================ ============= =================
QueryPerformanceCounter Windows Seven 10 ns 10 ns QueryPerformanceCounter Windows Seven 10 ns 10 ns
CLOCK_HIGHRES SunOS 5.11 2 ns 265 ns CLOCK_HIGHRES SunOS 5.11 2 ns 265 ns
CLOCK_MONOTONIC Linux 3.0 1 ns 322 ns CLOCK_MONOTONIC Linux 3.0 1 ns 322 ns
CLOCK_MONOTONIC_RAW Linux 3.3 1 ns 628 ns CLOCK_MONOTONIC_RAW Linux 3.3 1 ns 628 ns
CLOCK_BOOTTIME Linux 3.3 1 ns 628 ns CLOCK_BOOTTIME Linux 3.3 1 ns 628 ns
mach_absolute_time() Mac OS 10.6 1 ns 3 µs mach_absolute_time() Mac OS 10.6 1 ns 3 µs
CLOCK_MONOTONIC FreeBSD 8.2 11 ns 5 µs CLOCK_MONOTONIC FreeBSD 8.2 11 ns 5 µs
CLOCK_MONOTONIC OpenBSD 5.0 10 ms 5 µs CLOCK_MONOTONIC OpenBSD 5.0 10 ms 5 µs
CLOCK_UPTIME FreeBSD 8.2 11 ns 6 µs CLOCK_UPTIME FreeBSD 8.2 11 ns 6 µs
CLOCK_MONOTONIC_COARSE Linux 3.3 1 ms 1 ms CLOCK_MONOTONIC_COARSE Linux 3.3 1 ms 1 ms
CLOCK_MONOTONIC_COARSE Linux 3.0 4 ms 4 ms CLOCK_MONOTONIC_COARSE Linux 3.0 4 ms 4 ms
GetTickCount64() Windows Seven 16 ms 15 ms GetTickCount64() Windows Seven 16 ms 15 ms
========================= ================ ========= ================= ========================= ================ ============= =================
The "Python Resolution" column was filled using the The "OS Resolution" is the resolution announced by the operating
`clock_resolution.py system.
The "Python Resolution" is the smallest difference between two calls
to the time function computed in Python using the `clock_resolution.py
<http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_ <http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_
program. program.
@ -1172,35 +1177,40 @@ On Solaris, gethrtime() is the same as clock_gettime(CLOCK_MONOTONIC).
System Time System Time
----------- -----------
========================= =============== ============= =============== ========================= ============ ============= ===============
Name Resolution Include sleep Include suspend Name C Resolution Include Sleep Include Suspend
========================= =============== ============= =============== ========================= ============ ============= ===============
CLOCK_REALTIME 1 ns Yes Yes CLOCK_REALTIME 1 ns Yes Yes
CLOCK_REALTIME_COARSE 1 ns Yes Yes CLOCK_REALTIME_COARSE 1 ns Yes Yes
GetSystemTimeAsFileTime 100 ns Yes Yes GetSystemTimeAsFileTime 100 ns Yes Yes
gettimeofday() 1 µs Yes Yes gettimeofday() 1 µs Yes Yes
ftime() 1 ms Yes Yes ftime() 1 ms Yes Yes
time() 1 sec Yes Yes time() 1 sec Yes Yes
========================= =============== ============= =============== ========================= ============ ============= ===============
The "C Resolution" column is the resolution of the underlying C
structure.
Examples of clock precision on x86_64: Examples of clock precision on x86_64:
========================= ================ ========= ================= ========================= ================ ============= =================
Name Operating system Precision Python Resolution Name Operating system OS Resolution Python Resolution
========================= ================ ========= ================= ========================= ================ ============= =================
CLOCK_REALTIME SunOS 5.11 10 ms 238 ns CLOCK_REALTIME SunOS 5.11 10 ms 238 ns
CLOCK_REALTIME Linux 3.0 1 ns 238 ns CLOCK_REALTIME Linux 3.0 1 ns 238 ns
gettimeofday() Mac OS 10.6 1 µs 4 µs gettimeofday() Mac OS 10.6 1 µs 4 µs
CLOCK_REALTIME FreeBSD 8.2 11 ns 6 µs CLOCK_REALTIME FreeBSD 8.2 11 ns 6 µs
CLOCK_REALTIME OpenBSD 5.0 10 ms 5 µs CLOCK_REALTIME OpenBSD 5.0 10 ms 5 µs
CLOCK_REALTIME_COARSE Linux 3.3 1 ms 1 ms CLOCK_REALTIME_COARSE Linux 3.3 1 ms 1 ms
CLOCK_REALTIME_COARSE Linux 3.0 4 ms 4 ms CLOCK_REALTIME_COARSE Linux 3.0 4 ms 4 ms
GetSystemTimeAsFileTime() Windows Seven 16 ms 1 ms GetSystemTimeAsFileTime() Windows Seven 16 ms 1 ms
ftime() Windows Seven \- 1 ms ftime() Windows Seven \- 1 ms
========================= ================ ========= ================= ========================= ================ ============= =================
The "Python Resolution" column was filled using the The "OS Resolution" is the resolution announced by the operating
`clock_resolution.py system.
The "Python Resolution" is the smallest difference between two calls
to the time function computed in Python using the `clock_resolution.py
<http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_ <http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_
program. program.
@ -1242,45 +1252,50 @@ Process Time
The process time cannot be set. It is not monotonic: the clocks stop The process time cannot be set. It is not monotonic: the clocks stop
while the process is idle. while the process is idle.
========================= ========== ============================ =============== ========================= ============ ============================ ===============
Name Resolution Include sleep Include suspend Name C Resolution Include Sleep Include Suspend
========================= ========== ============================ =============== ========================= ============ ============================ ===============
GetProcessTimes() 100 ns No No GetProcessTimes() 100 ns No No
CLOCK_PROCESS_CPUTIME_ID 1 ns No No CLOCK_PROCESS_CPUTIME_ID 1 ns No No
getrusage(RUSAGE_SELF) 1 µs No No getrusage(RUSAGE_SELF) 1 µs No No
times() \- No No times() \- No No
clock() \- Yes on Windows, No otherwise No clock() \- Yes on Windows, No otherwise No
========================= ========== ============================ =============== ========================= ============ ============================ ===============
The "C Resolution" column is the resolution of the underlying C
structure.
Examples of clock precision on x86_64: Examples of clock precision on x86_64:
========================= ================ ========= =================== ========================= ================ ============= ===================
Name Operating system Precision Python Resolution Name Operating system OS Resolution Python Resolution
========================= ================ ========= =================== ========================= ================ ============= ===================
CLOCK_PROCESS_CPUTIME_ID Linux 3.3 1 ns 1 ns CLOCK_PROCESS_CPUTIME_ID Linux 3.3 1 ns 1 ns
CLOCK_PROF FreeBSD 8.2 10 ms 1 µs CLOCK_PROF FreeBSD 8.2 10 ms 1 µs
getrusage(RUSAGE_SELF) FreeBSD 8.2 \- 1 µs getrusage(RUSAGE_SELF) FreeBSD 8.2 \- 1 µs
getrusage(RUSAGE_SELF) SunOS 5.11 \- 1 µs getrusage(RUSAGE_SELF) SunOS 5.11 \- 1 µs
CLOCK_PROCESS_CPUTIME_ID Linux 3.0 1 ns 1 µs CLOCK_PROCESS_CPUTIME_ID Linux 3.0 1 ns 1 µs
getrusage(RUSAGE_SELF) Mac OS 10.6 \- 5 µs getrusage(RUSAGE_SELF) Mac OS 10.6 \- 5 µs
clock() Mac OS 10.6 1 µs 5 µs clock() Mac OS 10.6 1 µs 5 µs
CLOCK_PROF OpenBSD 5.0 \- 5 µs CLOCK_PROF OpenBSD 5.0 \- 5 µs
getrusage(RUSAGE_SELF) Linux 3.0 \- 4 ms getrusage(RUSAGE_SELF) Linux 3.0 \- 4 ms
getrusage(RUSAGE_SELF) OpenBSD 5.0 \- 8 ms getrusage(RUSAGE_SELF) OpenBSD 5.0 \- 8 ms
clock() FreeBSD 8.2 8 ms 8 ms clock() FreeBSD 8.2 8 ms 8 ms
clock() Linux 3.0 1 µs 10 ms clock() Linux 3.0 1 µs 10 ms
times() Linux 3.0 10 ms 10 ms times() Linux 3.0 10 ms 10 ms
clock() OpenBSD 5.0 10 ms 10 ms clock() OpenBSD 5.0 10 ms 10 ms
times() OpenBSD 5.0 10 ms 10 ms times() OpenBSD 5.0 10 ms 10 ms
times() Mac OS 10.6 10 ms 10 ms times() Mac OS 10.6 10 ms 10 ms
clock() SunOS 5.11 1 µs 10 ms clock() SunOS 5.11 1 µs 10 ms
times() SunOS 5.11 1 µs 10 ms times() SunOS 5.11 1 µs 10 ms
GetProcessTimes() Windows Seven 16 ms 16 ms GetProcessTimes() Windows Seven 16 ms 16 ms
clock() Windows Seven 1 ms 1 ms clock() Windows Seven 1 ms 1 ms
========================= ================ ========= =================== ========================= ================ ============= ===================
The "Python Resolution" column was filled using the The "OS Resolution" is the resolution announced by the operating
`clock_resolution.py system.
The "Python Resolution" is the smallest difference between two calls
to the time function computed in Python using the `clock_resolution.py
<http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_ <http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_
program. program.
@ -1321,25 +1336,30 @@ Thread Time
The thread time cannot be set. It is not monotonic: the clocks stop The thread time cannot be set. It is not monotonic: the clocks stop
while the thread is idle. while the thread is idle.
========================= ========== ============= =============== ========================= ============ ============= ===============
Name Resolution Include sleep Include suspend Name C Resolution Include Sleep Include Suspend
========================= ========== ============= =============== ========================= ============ ============= ===============
CLOCK_THREAD_CPUTIME_ID 1 ns Yes Epoch changes CLOCK_THREAD_CPUTIME_ID 1 ns Yes Epoch changes
GetThreadTimes() 100 ns No ? GetThreadTimes() 100 ns No ?
========================= ========== ============= =============== ========================= ============ ============= ===============
The "C Resolution" column is the resolution of the underlying C
structure.
Examples of clock precision on x86_64: Examples of clock precision on x86_64:
========================= ================ =============== ================= ========================= ================ ============= =================
Name Operating system Precision Python Resolution Name Operating system OS Resolution Python Resolution
========================= ================ =============== ================= ========================= ================ ============= =================
CLOCK_THREAD_CPUTIME_ID FreeBSD 8.2 1 µs 1 µs CLOCK_THREAD_CPUTIME_ID FreeBSD 8.2 1 µs 1 µs
CLOCK_THREAD_CPUTIME_ID Linux 3.3 1 ns 649 ns CLOCK_THREAD_CPUTIME_ID Linux 3.3 1 ns 649 ns
GetThreadTimes() Windows Seven 16 ms 16 ms GetThreadTimes() Windows Seven 16 ms 16 ms
========================= ================ =============== ================= ========================= ================ ============= =================
The "Python Resolution" column was filled using the The "OS Resolution" is the resolution announced by the operating
`clock_resolution.py system.
The "Python Resolution" is the smallest difference between two calls
to the time function computed in Python using the `clock_resolution.py
<http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_ <http://hg.python.org/peps/file/tip/pep-0418/clock_resolution.py>`_
program. program.
@ -1388,29 +1408,32 @@ sleep duration is 90 seconds in the real time.
Sleep can be interrupted by a signal: the function fails with EINTR. Sleep can be interrupted by a signal: the function fails with EINTR.
======================== ========== ======================== ============
Name Resolution Name C Resolution
======================== ========== ======================== ============
nanosleep() 1 ns nanosleep() 1 ns
clock_nanosleep() 1 ns clock_nanosleep() 1 ns
usleep() 1 µs usleep() 1 µs
delay() 1 µs delay() 1 µs
sleep() 1 sec sleep() 1 sec
======================== ========== ======================== ============
Other functions: Other functions:
======================== ========== ======================== ============
Name Resolution Name C Resolution
======================== ========== ======================== ============
sigtimedwait() 1 ns sigtimedwait() 1 ns
pthread_cond_timedwait() 1 ns pthread_cond_timedwait() 1 ns
sem_timedwait() 1 ns sem_timedwait() 1 ns
select() 1 µs select() 1 µs
epoll() 1 ms epoll() 1 ms
poll() 1 ms poll() 1 ms
WaitForSingleObject() 1 ms WaitForSingleObject() 1 ms
======================== ========== ======================== ============
The "C Resolution" column is the resolution of the underlying C
structure.
Functions Functions