#27818: Use contextlib.suppress to suppress exceptions. -------------------------------------+------------------------------------- Reporter: Mads Jensen | Owner: Tim Type: | Graham <timograham@…> Cleanup/optimization | Status: closed Component: Core (Other) | Version: master Severity: Normal | Resolution: fixed Keywords: | Triage Stage: Accepted Has patch: 1 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+-------------------------------------
Comment (by Adam (Chainz) Johnson): I only found out about this in review from Tim the other week. I think it should be reverted because it's making things slower unnecessarily. I count contextlib.suppress as about 10 times slower than plain try/except, not to mention it can trigger garbage collection as it creates and destroys an object every time: {{{ In [8]: def foo(): ...: try: ...: pass ...: except AttributeError: ...: pass ...: In [9]: def foo2(): ...: with contextlib.suppress(AttributeError): ...: pass ...: In [10]: %timeit foo() The slowest run took 10.24 times longer than the fastest. This could mean that an intermediate result is being cached. 10000000 loops, best of 3: 111 ns per loop In [11]: %timeit foo2() The slowest run took 6.15 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 1.13 µs per loop }}} How would we proceed? Should I take this to the mailing list, or can I just submit a revert PR? -- Ticket URL: <https://code.djangoproject.com/ticket/27818#comment:7> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/068.dd31b59456297a71bec1eaabdaff508d%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.