[Checkins] [zopefoundation/zope.interface] ccf37e: Move to a metaclass for handling __module__.
Jason Madden
noreply at github.com
Wed Mar 11 23:46:28 CET 2020
Branch: refs/heads/faster-eq-hash-comparison
Home: https://github.com/zopefoundation/zope.interface
Commit: ccf37eee41d56a278b0d5d7e1745b4a29187c0a2
https://github.com/zopefoundation/zope.interface/commit/ccf37eee41d56a278b0d5d7e1745b4a29187c0a2
Author: Jason Madden <jamadden at gmail.com>
Date: 2020-03-11 (Wed, 11 Mar 2020)
Changed paths:
M benchmarks/micro.py
M src/zope/interface/interface.py
Log Message:
-----------
Move to a metaclass for handling __module__.
This offers the absolute best performance at what seems like reasonable complexity.
+-------------------------------------------------------------+----------------+-------------------------------+
| Benchmark | 38-master-full | 38-faster-meta |
+=============================================================+================+===============================+
| read __module__ | 41.8 ns | 40.9 ns: 1.02x faster (-2%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| read __name__ | 41.8 ns | 39.9 ns: 1.05x faster (-5%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| read providedBy | 56.9 ns | 58.4 ns: 1.03x slower (+3%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| query adapter (no registrations) | 3.85 ms | 2.95 ms: 1.31x faster (-24%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| query adapter (all trivial registrations) | 4.62 ms | 3.63 ms: 1.27x faster (-21%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| query adapter (all trivial registrations, wide inheritance) | 51.8 us | 42.2 us: 1.23x faster (-19%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| query adapter (all trivial registrations, deep inheritance) | 52.0 us | 41.7 us: 1.25x faster (-20%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| sort interfaces | 234 us | 29.9 us: 7.84x faster (-87%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| sort mixed | 569 us | 340 us: 1.67x faster (-40%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| contains (empty dict) | 135 ns | 55.2 ns: 2.44x faster (-59%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| contains (populated dict: interfaces) | 137 ns | 56.1 ns: 2.45x faster (-59%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| contains (populated list: interfaces) | 39.7 us | 2.96 us: 13.42x faster (-93%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| contains (populated dict: implementedBy) | 137 ns | 55.2 ns: 2.48x faster (-60%) |
+-------------------------------------------------------------+----------------+-------------------------------+
| contains (populated list: implementedBy) | 40.6 us | 24.1 us: 1.68x faster (-41%) |
+-------------------------------------------------------------+----------------+-------------------------------+
Not significant (2): read __doc__; sort implementedBy
More information about the checkins
mailing list