Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions Lib/test/seq_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,43 @@ def __eq__(self, other):
checklast = self.type2test([StopCompares(), 1])
self.assertRaises(DoNotTestEq, checklast.__contains__, 1)

def test_compare_nan(self):
nan = float("nan")
a = self.type2test([nan])
b = self.type2test([nan])
self.assertTrue(a == a)
self.assertFalse(a != a)
self.assertTrue(a == b)
self.assertFalse(a != b)
self.assertFalse(a < a)
self.assertFalse(a < b)
self.assertFalse(a > b)

def test_compare_decimal_nan(self):
import decimal
nan = decimal.Decimal("NaN")
a = self.type2test([nan])
b = self.type2test([nan])
self.assertTrue(a == a)
self.assertFalse(a != a)
self.assertTrue(a == b)
self.assertFalse(a != b)
self.assertFalse(a < a)
self.assertFalse(a < b)
self.assertFalse(a > b)

def test_compare_signed_zero(self):
a = self.type2test([0.0])
b = self.type2test([-0.0])
self.assertTrue(a == a)
self.assertFalse(a != a)
self.assertTrue(b == b)
self.assertFalse(b != b)
self.assertTrue(a == b)
self.assertFalse(a != b)
self.assertFalse(a > b)
self.assertFalse(a < b)

def test_len(self):
self.assertEqual(len(self.type2test()), 0)
self.assertEqual(len(self.type2test([])), 0)
Expand Down
18 changes: 12 additions & 6 deletions Objects/tupleobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -666,18 +666,24 @@ tuple_richcompare(PyObject *v, PyObject *w, int op)
if (!PyTuple_Check(v) || !PyTuple_Check(w))
Py_RETURN_NOTIMPLEMENTED;

if (v == w) {
Py_RETURN_RICHCOMPARE(0, 0, op);
}

Comment on lines +673 to +676
Copy link
Contributor Author

@maurycy maurycy Nov 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm aware of https://bugs.python.org/issue30907 but I think it was premature:

  • pyperformance was much less mature then,
  • it was hard to go beyond simple microbenchmarks,
  • there was no quantifiable arguments,
  • there was generally less focus on performance in the language.

That said, even 25d53eb, without the identity check, is great (9f2a34a is main):

The `pyperformance compare`:
pyperformance.9f2a34af747.json
==============================

Performance version: 1.13.0
Report on Linux-6.12.57+deb13-amd64-x86_64-with-glibc2.41
Number of logical CPUs: 24
Start date: 2025-11-26 20:05:17.126618
End date: 2025-11-26 21:43:38.389462

pyperformance.25d53ebaea3.json
==============================

Performance version: 1.13.0
Report on Linux-6.12.57+deb13-amd64-x86_64-with-glibc2.41
Number of logical CPUs: 24
Start date: 2025-11-27 14:00:59.954246
End date: 2025-11-27 15:54:44.937969

+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| Benchmark                        | pyperformance.9f2a34af747.json | pyperformance.25d53ebaea3.json | Change       | Significance           |
+==================================+================================+================================+==============+========================+
| 2to3                             | 207 ms                         | 207 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_generators                 | 289 ms                         | 286 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_cpu_io_mixed          | 394 ms                         | 392 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_cpu_io_mixed_tg       | 395 ms                         | 394 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager                 | 83.3 ms                        | 83.3 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_cpu_io_mixed    | 336 ms                         | 333 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_cpu_io_mixed_tg | 368 ms                         | 366 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_io              | 422 ms                         | 425 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_io_tg           | 419 ms                         | 421 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_memoization     | 162 ms                         | 161 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_memoization_tg  | 205 ms                         | 205 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_tg              | 156 ms                         | 155 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_io                    | 448 ms                         | 450 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_io_tg                 | 429 ms                         | 431 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_memoization           | 222 ms                         | 221 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_memoization_tg        | 231 ms                         | 232 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_none                  | 192 ms                         | 194 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_none_tg               | 191 ms                         | 192 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| asyncio_tcp                      | 252 ms                         | 277 ms                         | 1.10x slower | Significant (t=-35.30) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| asyncio_tcp_ssl                  | 1.21 sec                       | 1.24 sec                       | 1.03x slower | Significant (t=-82.44) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| asyncio_websockets               | 357 ms                         | 357 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| bench_mp_pool                    | 13.2 ms                        | 12.2 ms                        | 1.08x faster | Significant (t=9.85)   |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| bench_thread_pool                | 750 us                         | 674 us                         | 1.11x faster | Significant (t=113.01) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| bpe_tokeniser                    | 3.58 sec                       | 3.64 sec                       | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| chameleon                        | 11.9 ms                        | 11.8 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| chaos                            | 43.8 ms                        | 44.1 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| comprehensions                   | 13.0 us                        | 12.3 us                        | 1.06x faster | Significant (t=8.87)   |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| coroutines                       | 17.1 ms                        | 17.0 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| coverage                         | 58.5 ms                        | 57.9 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| create_gc_cycles                 | 2.09 ms                        | 2.03 ms                        | 1.03x faster | Significant (t=8.72)   |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| crypto_pyaes                     | 58.3 ms                        | 57.7 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| dask                             | 682 ms                         | 531 ms                         | 1.28x faster | Significant (t=299.38) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deepcopy                         | 193 us                         | 196 us                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deepcopy_memo                    | 19.1 us                        | 19.3 us                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deepcopy_reduce                  | 2.13 us                        | 2.16 us                        | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deltablue                        | 2.42 ms                        | 2.42 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| django_template                  | 28.3 ms                        | 28.1 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| docutils                         | 2.11 sec                       | 2.12 sec                       | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| dulwich_log                      | 43.6 ms                        | 43.6 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| fannkuch                         | 273 ms                         | 268 ms                         | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| float                            | 56.1 ms                        | 53.8 ms                        | 1.04x faster | Significant (t=8.11)   |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| gc_traversal                     | 4.15 ms                        | 4.04 ms                        | 1.03x faster | Significant (t=15.82)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| generators                       | 22.4 ms                        | 21.7 ms                        | 1.04x faster | Significant (t=21.28)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| genshi_text                      | 17.4 ms                        | 17.5 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| genshi_xml                       | 39.5 ms                        | 38.7 ms                        | 1.02x faster | Significant (t=10.11)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| go                               | 89.9 ms                        | 89.4 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| hexiom                           | 4.56 ms                        | 4.49 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| html5lib                         | 49.5 ms                        | 50.0 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| json_dumps                       | 7.49 ms                        | 7.29 ms                        | 1.03x faster | Significant (t=36.97)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| json_loads                       | 18.4 us                        | 18.8 us                        | 1.03x slower | Significant (t=-16.34) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| logging_format                   | 4.88 us                        | 4.87 us                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| logging_silent                   | 69.2 ns                        | 67.5 ns                        | 1.03x faster | Significant (t=26.85)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| logging_simple                   | 4.40 us                        | 4.37 us                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| mako                             | 7.96 ms                        | 7.95 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| many_optionals                   | 862 us                         | 875 us                         | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| mdp                              | 939 ms                         | 954 ms                         | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| meteor_contest                   | 94.4 ms                        | 95.1 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| nbody                            | 68.1 ms                        | 69.9 ms                        | 1.03x slower | Significant (t=-11.08) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| nqueens                          | 69.1 ms                        | 72.1 ms                        | 1.04x slower | Significant (t=-56.52) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pathlib                          | 10.0 ms                        | 9.94 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle                           | 13.7 us                        | 13.7 us                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle_dict                      | 25.0 us                        | 24.3 us                        | 1.03x faster | Significant (t=23.80)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle_list                      | 3.78 us                        | 3.89 us                        | 1.03x slower | Significant (t=-13.22) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle_pure_python               | 241 us                         | 241 us                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pidigits                         | 184 ms                         | 184 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pprint_pformat                   | 1.12 sec                       | 1.16 sec                       | 1.04x slower | Significant (t=-31.84) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pprint_safe_repr                 | 547 ms                         | 570 ms                         | 1.04x slower | Significant (t=-31.75) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pyflate                          | 316 ms                         | 311 ms                         | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| python_startup                   | 10.8 ms                        | 10.8 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| python_startup_no_site           | 6.34 ms                        | 6.34 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| raytrace                         | 212 ms                         | 213 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_compile                    | 98.5 ms                        | 99.4 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_dna                        | 162 ms                         | 155 ms                         | 1.04x faster | Significant (t=58.02)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_effbot                     | 2.26 ms                        | 2.20 ms                        | 1.03x faster | Significant (t=33.39)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_v8                         | 18.4 ms                        | 18.3 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| richards                         | 33.6 ms                        | 33.4 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| richards_super                   | 38.2 ms                        | 37.8 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_fft                      | 197 ms                         | 198 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_lu                       | 66.5 ms                        | 67.2 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_monte_carlo              | 44.0 ms                        | 43.6 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_sor                      | 74.9 ms                        | 74.2 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_sparse_mat_mult          | 2.99 ms                        | 3.10 ms                        | 1.04x slower | Significant (t=-41.64) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| spectral_norm                    | 63.7 ms                        | 63.6 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sphinx                           | 792 ms                         | 790 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlalchemy_declarative           | 108 ms                         | 109 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlalchemy_imperative            | 13.2 ms                        | 13.3 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_normalize             | 83.2 ms                        | 83.1 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_optimize              | 41.9 ms                        | 41.7 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_parse                 | 969 us                         | 987 us                         | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_transpile             | 1.25 ms                        | 1.26 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlite_synth                     | 1.98 us                        | 1.97 us                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| subparsers                       | 31.3 ms                        | 31.0 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_expand                     | 360 ms                         | 361 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_integrate                  | 16.0 ms                        | 16.2 ms                        | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_str                        | 210 ms                         | 212 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_sum                        | 110 ms                         | 110 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| telco                            | 117 ms                         | 117 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| tomli_loads                      | 1.51 sec                       | 1.54 sec                       | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| tornado_http                     | 76.7 ms                        | 76.7 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| typing_runtime_protocols         | 121 us                         | 121 us                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpack_sequence                  | 31.7 ns                        | 34.0 ns                        | 1.07x slower | Significant (t=-54.16) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpickle                         | 10.6 us                        | 10.3 us                        | 1.03x faster | Significant (t=10.82)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpickle_list                    | 3.92 us                        | 3.84 us                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpickle_pure_python             | 156 us                         | 158 us                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xdsl_constant_fold               | 35.9 ms                        | 35.8 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_generate               | 67.2 ms                        | 68.0 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_iterparse              | 66.3 ms                        | 65.8 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_parse                  | 106 ms                         | 105 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_process                | 47.3 ms                        | 46.6 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+

Copy link
Contributor Author

@maurycy maurycy Nov 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Particularly:

  • 25d53eb - without the identity check
  • 9ba8110 - with the identity check
The `pyperformance compare`:
pyperformance.25d53ebaea3.json
==============================

Performance version: 1.13.0
Report on Linux-6.12.57+deb13-amd64-x86_64-with-glibc2.41
Number of logical CPUs: 24
Start date: 2025-11-27 14:00:59.954246
End date: 2025-11-27 15:54:44.937969

pyperformance.9ba81106b1d.json
==============================

Performance version: 1.13.0
Report on Linux-6.12.57+deb13-amd64-x86_64-with-glibc2.41
Number of logical CPUs: 24
Start date: 2025-11-27 03:09:32.694677
End date: 2025-11-27 05:02:22.084653

+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| Benchmark                        | pyperformance.25d53ebaea3.json | pyperformance.9ba81106b1d.json | Change       | Significance           |
+==================================+================================+================================+==============+========================+
| 2to3                             | 207 ms                         | 206 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_generators                 | 286 ms                         | 290 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_cpu_io_mixed          | 392 ms                         | 392 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_cpu_io_mixed_tg       | 394 ms                         | 394 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager                 | 83.3 ms                        | 82.6 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_cpu_io_mixed    | 333 ms                         | 333 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_cpu_io_mixed_tg | 366 ms                         | 366 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_io              | 425 ms                         | 423 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_io_tg           | 421 ms                         | 422 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_memoization     | 161 ms                         | 160 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_memoization_tg  | 205 ms                         | 206 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_eager_tg              | 155 ms                         | 156 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_io                    | 450 ms                         | 453 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_io_tg                 | 431 ms                         | 432 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_memoization           | 221 ms                         | 222 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_memoization_tg        | 232 ms                         | 233 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_none                  | 194 ms                         | 193 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| async_tree_none_tg               | 192 ms                         | 192 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| asyncio_tcp                      | 277 ms                         | 274 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| asyncio_tcp_ssl                  | 1.24 sec                       | 1.25 sec                       | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| asyncio_websockets               | 357 ms                         | 358 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| bench_mp_pool                    | 12.2 ms                        | 12.4 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| bench_thread_pool                | 674 us                         | 671 us                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| bpe_tokeniser                    | 3.64 sec                       | 3.58 sec                       | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| chameleon                        | 11.8 ms                        | 11.7 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| chaos                            | 44.1 ms                        | 44.1 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| comprehensions                   | 12.3 us                        | 12.3 us                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| connected_components             | 359 ms                         | 358 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| coroutines                       | 17.0 ms                        | 17.0 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| coverage                         | 57.9 ms                        | 55.3 ms                        | 1.05x faster | Significant (t=35.65)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| create_gc_cycles                 | 2.03 ms                        | 2.03 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| crypto_pyaes                     | 57.7 ms                        | 58.2 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| dask                             | 531 ms                         | 526 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deepcopy                         | 196 us                         | 193 us                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deepcopy_memo                    | 19.3 us                        | 18.6 us                        | 1.03x faster | Significant (t=54.44)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deepcopy_reduce                  | 2.16 us                        | 2.13 us                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| deltablue                        | 2.42 ms                        | 2.42 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| django_template                  | 28.1 ms                        | 28.0 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| docutils                         | 2.12 sec                       | 2.12 sec                       | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| dulwich_log                      | 43.6 ms                        | 43.7 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| fannkuch                         | 268 ms                         | 278 ms                         | 1.04x slower | Significant (t=-9.68)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| float                            | 53.8 ms                        | 54.1 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| gc_traversal                     | 4.04 ms                        | 4.06 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| generators                       | 21.7 ms                        | 21.4 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| genshi_text                      | 17.5 ms                        | 16.8 ms                        | 1.04x faster | Significant (t=16.98)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| genshi_xml                       | 38.7 ms                        | 38.0 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| go                               | 89.4 ms                        | 91.2 ms                        | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| hexiom                           | 4.49 ms                        | 4.47 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| html5lib                         | 50.0 ms                        | 49.0 ms                        | 1.02x faster | Significant (t=15.54)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| json_dumps                       | 7.29 ms                        | 7.40 ms                        | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| json_loads                       | 18.8 us                        | 19.0 us                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| k_core                           | 1.58 sec                       | 1.57 sec                       | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| logging_format                   | 4.87 us                        | 4.86 us                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| logging_silent                   | 67.5 ns                        | 67.4 ns                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| logging_simple                   | 4.37 us                        | 4.34 us                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| mako                             | 7.95 ms                        | 7.67 ms                        | 1.04x faster | Significant (t=12.51)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| many_optionals                   | 875 us                         | 871 us                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| mdp                              | 954 ms                         | 941 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| meteor_contest                   | 95.1 ms                        | 94.2 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| nbody                            | 69.9 ms                        | 69.3 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| nqueens                          | 72.1 ms                        | 70.0 ms                        | 1.03x faster | Significant (t=34.08)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pathlib                          | 9.94 ms                        | 9.83 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle                           | 13.7 us                        | 13.8 us                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle_dict                      | 24.3 us                        | 23.6 us                        | 1.03x faster | Significant (t=34.28)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle_list                      | 3.89 us                        | 3.78 us                        | 1.03x faster | Significant (t=13.83)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pickle_pure_python               | 241 us                         | 240 us                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pidigits                         | 184 ms                         | 184 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pprint_pformat                   | 1.16 sec                       | 1.14 sec                       | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pprint_safe_repr                 | 570 ms                         | 557 ms                         | 1.02x faster | Significant (t=16.23)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| pyflate                          | 311 ms                         | 316 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| python_startup                   | 10.8 ms                        | 10.8 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| python_startup_no_site           | 6.34 ms                        | 6.34 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| raytrace                         | 213 ms                         | 215 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_compile                    | 99.4 ms                        | 98.0 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_dna                        | 155 ms                         | 155 ms                         | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_effbot                     | 2.20 ms                        | 2.19 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| regex_v8                         | 18.3 ms                        | 18.0 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| richards                         | 33.4 ms                        | 33.0 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| richards_super                   | 37.8 ms                        | 37.5 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_fft                      | 198 ms                         | 196 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_lu                       | 67.2 ms                        | 70.2 ms                        | 1.04x slower | Significant (t=-22.40) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_monte_carlo              | 43.6 ms                        | 44.4 ms                        | 1.02x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_sor                      | 74.2 ms                        | 75.2 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| scimark_sparse_mat_mult          | 3.10 ms                        | 3.03 ms                        | 1.02x faster | Significant (t=20.57)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| shortest_path                    | 369 ms                         | 370 ms                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| spectral_norm                    | 63.6 ms                        | 62.5 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sphinx                           | 790 ms                         | 786 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlalchemy_declarative           | 109 ms                         | 108 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlalchemy_imperative            | 13.3 ms                        | 13.2 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_normalize             | 83.1 ms                        | 81.6 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_optimize              | 41.7 ms                        | 41.3 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_parse                 | 987 us                         | 962 us                         | 1.03x faster | Significant (t=10.79)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlglot_v2_transpile             | 1.26 ms                        | 1.24 ms                        | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sqlite_synth                     | 1.97 us                        | 1.99 us                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| subparsers                       | 31.0 ms                        | 31.1 ms                        | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_expand                     | 361 ms                         | 353 ms                         | 1.02x faster | Significant (t=33.14)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_integrate                  | 16.2 ms                        | 16.0 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_str                        | 212 ms                         | 208 ms                         | 1.02x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| sympy_sum                        | 110 ms                         | 109 ms                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| telco                            | 117 ms                         | 114 ms                         | 1.03x faster | Significant (t=15.66)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| tomli_loads                      | 1.54 sec                       | 1.50 sec                       | 1.03x faster | Significant (t=17.51)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| tornado_http                     | 76.7 ms                        | 76.5 ms                        | 1.00x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| typing_runtime_protocols         | 121 us                         | 121 us                         | 1.00x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpack_sequence                  | 34.0 ns                        | 31.3 ns                        | 1.09x faster | Significant (t=44.25)  |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpickle                         | 10.3 us                        | 10.4 us                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpickle_list                    | 3.84 us                        | 4.01 us                        | 1.04x slower | Significant (t=-30.06) |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| unpickle_pure_python             | 158 us                         | 156 us                         | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xdsl_constant_fold               | 35.8 ms                        | 35.4 ms                        | 1.01x faster | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_generate               | 68.0 ms                        | 68.7 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_iterparse              | 65.8 ms                        | 66.1 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_parse                  | 105 ms                         | 106 ms                         | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+
| xml_etree_process                | 46.6 ms                        | 47.0 ms                        | 1.01x slower | Not significant        |
+----------------------------------+--------------------------------+--------------------------------+--------------+------------------------+

vt = (PyTupleObject *)v;
wt = (PyTupleObject *)w;

vlen = Py_SIZE(vt);
wlen = Py_SIZE(wt);

/* Note: the corresponding code for lists has an "early out" test
* here when op is EQ or NE and the lengths differ. That pays there,
* but Tim was unable to find any real code where EQ/NE tuple
* compares don't have the same length, so testing for it here would
* have cost without benefit.
*/
if (vlen != wlen) {
switch (op) {
case Py_EQ:
Py_RETURN_FALSE;
case Py_NE:
Py_RETURN_TRUE;
}
}

/* Search for the first index where items are different.
* Note that because tuples are immutable, it's safe to reuse
Expand Down
Loading