With the move to inline caching, jumps are getting a bit longer. This adds new category of COMPARE_OP failures for the (increasingly more common) case where a COMPARE_OP instruction is followed by an EXTENDED_ARG.
New stats for a full pyperformance run:
| Kind |
Count |
Ratio |
| unquickened |
7348739 |
0.4% |
| specialization.deferred |
359371048 |
21.7% |
| specialization.deopt |
15730 |
0.0% |
| hit |
1289210975 |
77.8% |
| miss |
943057 |
0.1% |
Specialization attempts
|
Count |
Ratio |
| Success |
289083 |
4.8% |
| Failure |
5723386 |
95.2% |
| Failure kind |
Count |
Ratio |
| extended arg |
2473174 |
43.2% |
| not followed by cond jump |
1258612 |
22.0% |
| float long |
671682 |
11.7% |
| set |
579241 |
10.1% |
| different types |
165539 |
2.9% |
| bool |
137038 |
2.4% |
| tuple |
119632 |
2.1% |
| other |
115566 |
2.0% |
| big int |
95547 |
1.7% |
| bytes |
46481 |
0.8% |
| baseobject |
37335 |
0.7% |
| list |
22634 |
0.4% |
| string |
704 |
0.0% |
| long float |
201 |
0.0% |
https://bugs.python.org/issue46841