Set logging._srcfile to None. This avoids calling sys._getframe(), which may help to speed up your code in environments like PyPy (which can’t speed up code that uses sys._getframe()).
Benchmark script:
from pyftpdlib.log import config_logging, logger
config_logging()
for x in range(100000):
logger.error("ciao")
Before patch:
~/svn/pyftpdlib {master}$ time python3 foo.py &> /dev/null
real 0m1,838s
user 0m1,726s
sys 0m0,106s
After patch:
~/svn/pyftpdlib {master}$ time python3 foo.py &> /dev/null
real 0m1,381s
user 0m1,288s
sys 0m0,093s
Speedup logging by ~28%. From https://docs.python.org/3/howto/logging.html#optimization:
Benchmark script:
Before patch:
After patch: