giampaolo / pyftpdlib

Extremely fast and scalable Python FTP server library
MIT License
1.65k stars 265 forks source link

Speedup logging by 28% #591

Closed giampaolo closed 1 year ago

giampaolo commented 1 year ago

Speedup logging by ~28%. From https://docs.python.org/3/howto/logging.html#optimization:

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