peps: 65c5d45eab5f pep-0433/bench_cloexec.py (original) (raw)
Mercurial > peps
view pep-0433/bench_cloexec.py @ 6381:65c5d45eab5f default tip
Add a note to README that this repo is now migrated to Git and will remain frozen.
Georg Brandl georg@python.org | |
---|---|
date | Thu, 16 Jun 2016 21:59:12 +0200 |
parents | d269feb2c809 |
children |
line wrap: on
line source
""" Linux 3.6, O_CLOEXEC: open(cloexec=False) + close(): 7.76 us per call open(cloexec=True) + close(): 7.87 us per call => 1% slower Linux 3.6, ioctl(FIOCLEX): open(cloexec=False) + close(): 7.77 us per call open(cloexec=True) + close(): 8.02 us per call => 3% slower Linux 3.6, fnctl(F_GETFD) + fnctl(F_SETFD): open(cloexec=False) + close(): 7.77 us per call open(cloexec=True) + close(): 8.01 us per call => 3% slower """ import os, time name = file LOOPS = 10**5 RUNS = 5 for cloexec in (False, True): best = None for run in range(RUNS): print("cloexec", cloexec, "run", run) time.sleep(1) start = time.perf_counter() for loops in range(LOOPS): fd = os.open(name, os.O_RDONLY, cloexec=cloexec) os.close(fd) dt = time.perf_counter() - start if best is not None: best = min(best, dt) else: best = dt seconds = best / LOOPS print("open(cloexec=%s) + close(): %.2f us per call" % (cloexec, seconds * 1e6))