Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
Closed
Description
Right now this function is not optimal. Source:
defgetHandlerNames():""" Return all known handler names as an immutable set. """result=set(_handlers.keys())returnfrozenset(result)
Why?_handlers.keys() already returnsset-like thing, so there's no need to use extraset()
It can be simplified to:
defgetHandlerNames():""" Return all known handler names as an immutable set. """returnfrozenset(_handlers.keys())
This simple benchmark (with only two handlers) gives a noticable improvement:
importlogging# create loggerlogger=logging.getLogger('simple_example')logger.setLevel(logging.DEBUG)# create formatterformatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')# create two handlersch=logging.StreamHandler()ch.setLevel(logging.DEBUG)ch.setFormatter(formatter)logger.addHandler(ch)fl=logging.FileHandler('./log.txt')fl.setLevel(logging.DEBUG)fl.setFormatter(formatter)logger.addHandler(fl)
Before:
(.venv) ~/Desktop/cpython main ✗ » pyperf timeit --setup 'import ex; l = ex.logging' 'l.getHandlerNames()'.....................Mean +- std dev: 2.13 us +- 0.02 usAfter:
(.venv) ~/Desktop/cpython main ✗ » pyperf timeit --setup 'import ex; l = ex.logging' 'l.getHandlerNames()'.....................Mean +- std dev: 2.04 us +- 0.02 usSo, I think we should make this change :)
PR is incoming.