From ed2d331bc686ae275d8f3c652d7d4c0ba1cb0331 Mon Sep 17 00:00:00 2001 From: colesbury Date: Sun, 22 Dec 2024 00:09:53 +0000 Subject: [PATCH] Benchmarking results for @colesbury --- README.md | 2 +- RESULTS.md | 2 +- configs.svg | 48 +- .../README.md | 43 + ...recursive_c-3.14.0a3+-b28153d-vs-3.12.6.md | 207 + ...ecursive_c-3.14.0a3+-b28153d-vs-3.12.6.svg | 3058 ++++++++++++++ ...ursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.md | 204 + ...rsive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.svg | 2982 +++++++++++++ ...ursive_c-3.14.0a3+-b28153d-vs-base-mem.svg | 3748 +++++++++++++++++ ...e_recursive_c-3.14.0a3+-b28153d-vs-base.md | 169 + ..._recursive_c-3.14.0a3+-b28153d-vs-base.svg | 3432 +++++++++++++++ 11 files changed, 13869 insertions(+), 26 deletions(-) create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/README.md create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.md create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.svg create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.md create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.svg create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base-mem.svg create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.md create mode 100644 results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.svg diff --git a/README.md b/README.md index c249d5a0..945a1580 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Here are some recent and important revisions. πŸ‘‰ [Complete list of results](RE ## linux x86_64 (vultr) | date | fork/ref | hash/flags | vs. 3.12.6: | vs. 3.13.0rc2: | vs. base: | | --- | --- | --- | ---: | ---: | ---: | -| [2024-12-20](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL) | Yhg1s/optimise_recursive_c | b28153d (NOGIL) | 1.171x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.svg) | 1.198x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.svg) | 1.020x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base-mem.svg) | +| [2024-12-20](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL) | Yhg1s/optimise_recursive_c | b28153d (NOGIL) | 1.168x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.svg) | 1.195x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.svg) | 1.024x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base-mem.svg) | | [2024-12-20](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL) | mpage/gh_115999_load_attr_ | d6d4c73 (NOGIL) | 1.087x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.svg) | 1.116x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.svg) | 1.120x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base-mem.svg) | | [2024-12-20](results/bm-20241220-3.14.0a3%2B-d6d4c73) | mpage/gh_115999_load_attr_ | d6d4c73 | 1.087x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.svg) | 1.048x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.svg) | 1.002x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base-mem.svg) | | [2024-12-20](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL) | Yhg1s/optimise_recursive_c | ddb794a (NOGIL) | 1.185x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.12.6.svg) | 1.212x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.13.0rc2.svg) | 1.003x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-base-mem.svg) | diff --git a/RESULTS.md b/RESULTS.md index 216b4240..0544fd2c 100644 --- a/RESULTS.md +++ b/RESULTS.md @@ -207,7 +207,7 @@ ## linux x86_64 (vultr) | date | fork/ref | hash/flags | vs. 3.12.6: | vs. 3.13.0rc2: | vs. base: | | --- | --- | --- | ---: | ---: | ---: | -| [2024-12-20](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL) | Yhg1s/optimise_recursive_c | b28153d (NOGIL) | 1.171x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.svg) | 1.198x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.svg) | 1.020x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base-mem.svg) | +| [2024-12-20](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL) | Yhg1s/optimise_recursive_c | b28153d (NOGIL) | 1.168x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.svg) | 1.195x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.svg) | 1.024x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base-mem.svg) | | [2024-12-20](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL) | mpage/gh_115999_load_attr_ | d6d4c73 (NOGIL) | 1.087x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.svg) | 1.116x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.svg) | 1.120x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-d6d4c73-NOGIL/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base-mem.svg) | | [2024-12-20](results/bm-20241220-3.14.0a3%2B-d6d4c73) | mpage/gh_115999_load_attr_ | d6d4c73 | 1.087x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.12.6.svg) | 1.048x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-3.13.0rc2.svg) | 1.002x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-d6d4c73/bm-20241220-vultr-x86_64-mpage-gh_115999_load_attr_-3.14.0a3%2B-d6d4c73-vs-base-mem.svg) | | [2024-12-20](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL) | Yhg1s/optimise_recursive_c | ddb794a (NOGIL) | 1.185x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.12.6.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.12.6.svg) | 1.212x ↓
[πŸ“„](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.13.0rc2.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-3.13.0rc2.svg) | 1.003x ↑
[πŸ“„](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-base.md)[πŸ“ˆ](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-base.svg)[🧠](results/bm-20241220-3.14.0a3%2B-ddb794a-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-ddb794a-vs-base-mem.svg) | diff --git a/configs.svg b/configs.svg index a84898bd..6a1a618e 100644 --- a/configs.svg +++ b/configs.svg @@ -8,9 +8,9 @@ - + - + @@ -28,7 +28,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -56,7 +56,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -79,9 +79,9 @@ - + - + @@ -95,7 +95,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -116,7 +116,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -435,49 +435,49 @@ - + - + - + - + - + - + - + @@ -486,7 +486,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -504,7 +504,7 @@ - + @@ -513,7 +513,7 @@ - + @@ -522,7 +522,7 @@ - + diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/README.md b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/README.md new file mode 100644 index 00000000..fc76fe59 --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/README.md @@ -0,0 +1,43 @@ +# Results + +- fork: Yhg1s/optimise_recursive_c +- version: 3.14.0a3+ +- config: NOGIL +- commit hash: [b28153d](https://github.com/Yhg1s/cpython/commit/b28153d) +- commit date: 2024-12-20T23:07:38+00:00 +- commit merge base: [78ffba4221dcb2e39fd5db80c297d1777588bb59](https://github.com/python/cpython/commit/78ffba4221dcb2e39fd5db80c297d1777588bb59) +- ref: optimise_recursive_c + +## linux x86_64 (vultr) + +- [GitHub Action run](https://github.com/facebookexperimental/free-threading-benchmarking/actions/runs/12448173286) +- cpu model: Intel(R) Xeon(R) E-2286G CPU @ 4.00GHz +- platform: Linux-6.8.0-45-generic-x86_64-with-glibc2.39 +- [raw results](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d.json) + +### vs. 3.12.6 + +- Geometric mean: 1.168x slower (HPT: reliability of 100.00%, 1.13x slower at 99th %ile) +- Memory usage: 1.33x +- missing benchmarks: aiohttp, asyncio_tcp, asyncio_tcp_ssl, chameleon, dask, flaskblogging, gunicorn, mypy2, pickle, pickle_dict, pickle_list, tornado_http, unpack_sequence, unpickle, unpickle_list +- new benchmarks: connected_components, k_core, many_optionals, shortest_path, sphinx, subparsers +- [πŸ“„table](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.md) +- [πŸ“ˆtime plot](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.12.6.svg) + +### vs. 3.13.0rc2 + +- Geometric mean: 1.195x slower (HPT: reliability of 100.00%, 1.15x slower at 99th %ile) +- Memory usage: 1.31x +- missing benchmarks: aiohttp, asyncio_tcp, asyncio_tcp_ssl, chameleon, dask, flaskblogging, gunicorn, pickle, pickle_dict, pickle_list, tornado_http, unpack_sequence, unpickle, unpickle_list +- new benchmarks: connected_components, k_core, many_optionals, shortest_path, sphinx, sqlalchemy_declarative, sqlalchemy_imperative, subparsers +- [πŸ“„table](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.md) +- [πŸ“ˆtime plot](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-3.13.0rc2.svg) + +### vs. base + +- Geometric mean: 1.024x faster (HPT: reliability of 99.39%, 1.00x faster at 99th %ile) +- Memory usage: 0.99x +- [🧠memory plot](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base-mem.svg) +- [πŸ“„table](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.md) +- [πŸ“ˆtime plot](bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3%2B-b28153d-vs-base.svg) + diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.md b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.md new file mode 100644 index 00000000..72a303db --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.md @@ -0,0 +1,207 @@ +# Results vs. 3.12.6 + +- fork: Yhg1s +- ref: optimise_recursive_c +- machine: linux-x86_64 +- commit hash: b28153d +- commit date: 2024-12-20 +- overall geometric mean: 1.168x slower +- HPT reliability: 100.00% +- HPT 99th percentile: 1.13x slower +- Memory change: 1.33x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| 2to3 | 264 ms | 350 ms: 1.33x slower | +| docutils | 2.64 sec | 3.00 sec: 1.14x slower | +| html5lib | 63.6 ms | 90.2 ms: 1.42x slower | +| Geometric mean | (ref) | 1.29x slower | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| async_tree_io_tg | 1.11 sec | 737 ms: 1.51x faster | +| async_tree_io | 1.08 sec | 756 ms: 1.43x faster | +| async_tree_none_tg | 446 ms | 318 ms: 1.40x faster | +| async_tree_memoization_tg | 560 ms | 403 ms: 1.39x faster | +| async_tree_none | 464 ms | 351 ms: 1.32x faster | +| async_tree_memoization | 555 ms | 429 ms: 1.29x faster | +| async_tree_cpu_io_mixed_tg | 723 ms | 575 ms: 1.26x faster | +| async_tree_cpu_io_mixed | 715 ms | 601 ms: 1.19x faster | +| asyncio_websockets | 517 ms | 521 ms: 1.01x slower | +| coroutines | 23.9 ms | 24.2 ms: 1.01x slower | +| async_generators | 384 ms | 446 ms: 1.16x slower | +| Geometric mean | (ref) | 1.22x faster | + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| pidigits | 184 ms | 181 ms: 1.02x faster | +| float | 80.8 ms | 112 ms: 1.38x slower | +| nbody | 89.3 ms | 133 ms: 1.49x slower | +| Geometric mean | (ref) | 1.26x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| regex_effbot | 3.17 ms | 2.89 ms: 1.10x faster | +| regex_dna | 168 ms | 179 ms: 1.06x slower | +| regex_compile | 142 ms | 169 ms: 1.18x slower | +| regex_v8 | 20.6 ms | 24.9 ms: 1.21x slower | +| Geometric mean | (ref) | 1.09x slower | + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| xml_etree_iterparse | 96.7 ms | 90.1 ms: 1.07x faster | +| xml_etree_parse | 139 ms | 130 ms: 1.07x faster | +| json_loads | 26.5 us | 28.1 us: 1.06x slower | +| xml_etree_generate | 85.2 ms | 97.0 ms: 1.14x slower | +| tomli_loads | 2.11 sec | 2.52 sec: 1.19x slower | +| xml_etree_process | 59.0 ms | 73.0 ms: 1.24x slower | +| json_dumps | 10.4 ms | 14.0 ms: 1.35x slower | +| unpickle_pure_python | 221 us | 330 us: 1.49x slower | +| pickle_pure_python | 308 us | 499 us: 1.62x slower | +| Geometric mean | (ref) | 1.20x slower | + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|------------------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| python_startup_no_site | 7.16 ms | 9.79 ms: 1.37x slower | +| python_startup | 9.93 ms | 15.7 ms: 1.58x slower | +| Geometric mean | (ref) | 1.47x slower | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|-----------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| genshi_xml | 50.2 ms | 63.6 ms: 1.27x slower | +| genshi_text | 22.8 ms | 30.6 ms: 1.34x slower | +| django_template | 34.7 ms | 48.6 ms: 1.40x slower | +| mako | 11.0 ms | 17.0 ms: 1.55x slower | +| Geometric mean | (ref) | 1.39x slower | + +All benchmarks: +=============== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------------|:------------------------------------------------------:|:---------------------------------------------------------------------:| +| async_tree_io_tg | 1.11 sec | 737 ms: 1.51x faster | +| async_tree_io | 1.08 sec | 756 ms: 1.43x faster | +| async_tree_none_tg | 446 ms | 318 ms: 1.40x faster | +| async_tree_memoization_tg | 560 ms | 403 ms: 1.39x faster | +| async_tree_none | 464 ms | 351 ms: 1.32x faster | +| async_tree_memoization | 555 ms | 429 ms: 1.29x faster | +| async_tree_cpu_io_mixed_tg | 723 ms | 575 ms: 1.26x faster | +| async_tree_cpu_io_mixed | 715 ms | 601 ms: 1.19x faster | +| pathlib | 21.5 ms | 19.5 ms: 1.10x faster | +| regex_effbot | 3.17 ms | 2.89 ms: 1.10x faster | +| deepcopy | 352 us | 323 us: 1.09x faster | +| xml_etree_iterparse | 96.7 ms | 90.1 ms: 1.07x faster | +| xml_etree_parse | 139 ms | 130 ms: 1.07x faster | +| sqlite_synth | 2.20 us | 2.12 us: 1.04x faster | +| pidigits | 184 ms | 181 ms: 1.02x faster | +| json | 5.02 ms | 4.98 ms: 1.01x faster | +| deepcopy_memo | 40.3 us | 40.6 us: 1.01x slower | +| asyncio_websockets | 517 ms | 521 ms: 1.01x slower | +| coroutines | 23.9 ms | 24.2 ms: 1.01x slower | +| spectral_norm | 110 ms | 111 ms: 1.01x slower | +| gc_traversal | 3.46 ms | 3.51 ms: 1.02x slower | +| bpe_tokeniser | 4.74 sec | 5.02 sec: 1.06x slower | +| json_loads | 26.5 us | 28.1 us: 1.06x slower | +| regex_dna | 168 ms | 179 ms: 1.06x slower | +| pylint | 319 ms | 349 ms: 1.09x slower | +| deepcopy_reduce | 3.08 us | 3.38 us: 1.10x slower | +| scimark_fft | 342 ms | 379 ms: 1.11x slower | +| docutils | 2.64 sec | 3.00 sec: 1.14x slower | +| xml_etree_generate | 85.2 ms | 97.0 ms: 1.14x slower | +| dulwich_log | 78.9 ms | 90.7 ms: 1.15x slower | +| async_generators | 384 ms | 446 ms: 1.16x slower | +| mdp | 2.42 sec | 2.81 sec: 1.16x slower | +| generators | 32.2 ms | 37.7 ms: 1.17x slower | +| crypto_pyaes | 76.6 ms | 89.7 ms: 1.17x slower | +| sympy_sum | 166 ms | 195 ms: 1.18x slower | +| regex_compile | 142 ms | 169 ms: 1.18x slower | +| pycparser | 1.17 sec | 1.39 sec: 1.19x slower | +| tomli_loads | 2.11 sec | 2.52 sec: 1.19x slower | +| regex_v8 | 20.6 ms | 24.9 ms: 1.21x slower | +| sympy_str | 292 ms | 359 ms: 1.23x slower | +| sympy_integrate | 20.5 ms | 25.3 ms: 1.23x slower | +| sqlglot_optimize | 53.3 ms | 65.9 ms: 1.24x slower | +| xml_etree_process | 59.0 ms | 73.0 ms: 1.24x slower | +| nqueens | 80.1 ms | 99.1 ms: 1.24x slower | +| thrift | 791 us | 990 us: 1.25x slower | +| sqlglot_normalize | 107 ms | 133 ms: 1.25x slower | +| scimark_sparse_mat_mult | 4.39 ms | 5.53 ms: 1.26x slower | +| sympy_expand | 468 ms | 591 ms: 1.26x slower | +| genshi_xml | 50.2 ms | 63.6 ms: 1.27x slower | +| sqlalchemy_imperative | 21.8 ms | 27.6 ms: 1.27x slower | +| typing_runtime_protocols | 163 us | 207 us: 1.27x slower | +| meteor_contest | 104 ms | 131 ms: 1.27x slower | +| sqlalchemy_declarative | 143 ms | 182 ms: 1.27x slower | +| pprint_safe_repr | 743 ms | 963 ms: 1.30x slower | +| pprint_pformat | 1.52 sec | 2.00 sec: 1.32x slower | +| fannkuch | 372 ms | 493 ms: 1.32x slower | +| 2to3 | 264 ms | 350 ms: 1.33x slower | +| genshi_text | 22.8 ms | 30.6 ms: 1.34x slower | +| json_dumps | 10.4 ms | 14.0 ms: 1.35x slower | +| telco | 6.53 ms | 8.82 ms: 1.35x slower | +| scimark_lu | 114 ms | 155 ms: 1.36x slower | +| python_startup_no_site | 7.16 ms | 9.79 ms: 1.37x slower | +| logging_simple | 6.63 us | 9.10 us: 1.37x slower | +| comprehensions | 19.8 us | 27.3 us: 1.38x slower | +| float | 80.8 ms | 112 ms: 1.38x slower | +| logging_format | 7.35 us | 10.2 us: 1.39x slower | +| coverage | 71.4 ms | 99.3 ms: 1.39x slower | +| django_template | 34.7 ms | 48.6 ms: 1.40x slower | +| html5lib | 63.6 ms | 90.2 ms: 1.42x slower | +| richards_super | 51.9 ms | 74.7 ms: 1.44x slower | +| pyflate | 448 ms | 648 ms: 1.45x slower | +| richards | 45.9 ms | 66.6 ms: 1.45x slower | +| nbody | 89.3 ms | 133 ms: 1.49x slower | +| chaos | 62.8 ms | 93.9 ms: 1.49x slower | +| unpickle_pure_python | 221 us | 330 us: 1.49x slower | +| scimark_monte_carlo | 68.4 ms | 105 ms: 1.54x slower | +| hexiom | 6.17 ms | 9.52 ms: 1.54x slower | +| mako | 11.0 ms | 17.0 ms: 1.55x slower | +| python_startup | 9.93 ms | 15.7 ms: 1.58x slower | +| sqlglot_transpile | 1.67 ms | 2.69 ms: 1.61x slower | +| raytrace | 299 ms | 483 ms: 1.61x slower | +| pickle_pure_python | 308 us | 499 us: 1.62x slower | +| scimark_sor | 130 ms | 214 ms: 1.65x slower | +| logging_silent | 109 ns | 180 ns: 1.66x slower | +| create_gc_cycles | 1.09 ms | 1.84 ms: 1.69x slower | +| go | 139 ms | 236 ms: 1.69x slower | +| sqlglot_parse | 1.36 ms | 2.34 ms: 1.73x slower | +| deltablue | 3.45 ms | 7.31 ms: 2.12x slower | +| bench_thread_pool | 941 us | 3.39 ms: 3.61x slower | +| bench_mp_pool | 10.8 ms | 100 ms: 9.27x slower | +| Geometric mean | (ref) | 1.25x slower | +Ignored benchmarks (15) of results/bm-20240906-3.12.6-a4a2d2b/bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b.json: aiohttp, asyncio_tcp, asyncio_tcp_ssl, chameleon, dask, flaskblogging, gunicorn, mypy2, pickle, pickle_dict, pickle_list, tornado_http, unpack_sequence, unpickle, unpickle_list +Ignored benchmarks (6) of results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d.json: connected_components, k_core, many_optionals, shortest_path, sphinx, subparsers + +- Geometric mean (including insignificant results): 1.168x slower + +# HPT report + +- Reliability score: 100.00% likely to be slow +- 90% likely to have a slowdown of 1.16x +- 95% likely to have a slowdown of 1.16x +- 99% likely to have a slowdown of 1.13x + +# Memory +- memory change: 1.33x \ No newline at end of file diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.svg b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.svg new file mode 100644 index 00000000..3c6c0799 --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.12.6.svg @@ -0,0 +1,3058 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.md b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.md new file mode 100644 index 00000000..92de2e85 --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.md @@ -0,0 +1,204 @@ +# Results vs. 3.13.0rc2 + +- fork: Yhg1s +- ref: optimise_recursive_c +- machine: linux-x86_64 +- commit hash: b28153d +- commit date: 2024-12-20 +- overall geometric mean: 1.195x slower +- HPT reliability: 100.00% +- HPT 99th percentile: 1.15x slower +- Memory change: 1.31x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| 2to3 | 260 ms | 350 ms: 1.35x slower | +| docutils | 2.62 sec | 3.00 sec: 1.15x slower | +| html5lib | 67.0 ms | 90.2 ms: 1.35x slower | +| Geometric mean | (ref) | 1.28x slower | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| async_tree_io_tg | 913 ms | 737 ms: 1.24x faster | +| async_tree_io | 876 ms | 756 ms: 1.16x faster | +| async_tree_cpu_io_mixed_tg | 638 ms | 575 ms: 1.11x faster | +| async_tree_cpu_io_mixed | 666 ms | 601 ms: 1.11x faster | +| async_tree_memoization | 461 ms | 429 ms: 1.08x faster | +| async_tree_none_tg | 336 ms | 318 ms: 1.06x faster | +| async_tree_memoization_tg | 414 ms | 403 ms: 1.03x faster | +| coroutines | 23.6 ms | 24.2 ms: 1.03x slower | +| async_generators | 377 ms | 446 ms: 1.18x slower | +| Geometric mean | (ref) | 1.05x faster | + +Benchmark hidden because not significant (2): async_tree_none, asyncio_websockets + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| pidigits | 217 ms | 181 ms: 1.20x faster | +| float | 77.5 ms | 112 ms: 1.44x slower | +| nbody | 85.1 ms | 133 ms: 1.56x slower | +| Geometric mean | (ref) | 1.23x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| regex_effbot | 3.08 ms | 2.89 ms: 1.07x faster | +| regex_dna | 180 ms | 179 ms: 1.01x faster | +| regex_v8 | 22.7 ms | 24.9 ms: 1.10x slower | +| regex_compile | 132 ms | 169 ms: 1.28x slower | +| Geometric mean | (ref) | 1.07x slower | + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| xml_etree_iterparse | 94.9 ms | 90.1 ms: 1.05x faster | +| xml_etree_parse | 136 ms | 130 ms: 1.05x faster | +| json_loads | 27.0 us | 28.1 us: 1.04x slower | +| xml_etree_generate | 85.4 ms | 97.0 ms: 1.14x slower | +| xml_etree_process | 59.3 ms | 73.0 ms: 1.23x slower | +| tomli_loads | 2.01 sec | 2.52 sec: 1.26x slower | +| json_dumps | 10.5 ms | 14.0 ms: 1.32x slower | +| unpickle_pure_python | 210 us | 330 us: 1.57x slower | +| pickle_pure_python | 294 us | 499 us: 1.69x slower | +| Geometric mean | (ref) | 1.22x slower | + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|------------------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| python_startup_no_site | 7.39 ms | 9.79 ms: 1.32x slower | +| python_startup | 11.0 ms | 15.7 ms: 1.43x slower | +| Geometric mean | (ref) | 1.37x slower | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|-----------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| genshi_xml | 48.8 ms | 63.6 ms: 1.30x slower | +| genshi_text | 21.5 ms | 30.6 ms: 1.42x slower | +| django_template | 34.1 ms | 48.6 ms: 1.42x slower | +| mako | 11.3 ms | 17.0 ms: 1.50x slower | +| Geometric mean | (ref) | 1.41x slower | + +All benchmarks: +=============== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------------|:------------------------------------------------------------:|:---------------------------------------------------------------------:| +| async_tree_io_tg | 913 ms | 737 ms: 1.24x faster | +| pidigits | 217 ms | 181 ms: 1.20x faster | +| async_tree_io | 876 ms | 756 ms: 1.16x faster | +| async_tree_cpu_io_mixed_tg | 638 ms | 575 ms: 1.11x faster | +| async_tree_cpu_io_mixed | 666 ms | 601 ms: 1.11x faster | +| deepcopy | 355 us | 323 us: 1.10x faster | +| async_tree_memoization | 461 ms | 429 ms: 1.08x faster | +| regex_effbot | 3.08 ms | 2.89 ms: 1.07x faster | +| async_tree_none_tg | 336 ms | 318 ms: 1.06x faster | +| xml_etree_iterparse | 94.9 ms | 90.1 ms: 1.05x faster | +| xml_etree_parse | 136 ms | 130 ms: 1.05x faster | +| sqlite_synth | 2.21 us | 2.12 us: 1.04x faster | +| async_tree_memoization_tg | 414 ms | 403 ms: 1.03x faster | +| regex_dna | 180 ms | 179 ms: 1.01x faster | +| json | 4.93 ms | 4.98 ms: 1.01x slower | +| pathlib | 19.2 ms | 19.5 ms: 1.02x slower | +| coroutines | 23.6 ms | 24.2 ms: 1.03x slower | +| deepcopy_memo | 39.1 us | 40.6 us: 1.04x slower | +| json_loads | 27.0 us | 28.1 us: 1.04x slower | +| deepcopy_reduce | 3.11 us | 3.38 us: 1.09x slower | +| scimark_fft | 349 ms | 379 ms: 1.09x slower | +| regex_v8 | 22.7 ms | 24.9 ms: 1.10x slower | +| pylint | 317 ms | 349 ms: 1.10x slower | +| gc_traversal | 3.14 ms | 3.51 ms: 1.12x slower | +| telco | 7.82 ms | 8.82 ms: 1.13x slower | +| bpe_tokeniser | 4.45 sec | 5.02 sec: 1.13x slower | +| xml_etree_generate | 85.4 ms | 97.0 ms: 1.14x slower | +| docutils | 2.62 sec | 3.00 sec: 1.15x slower | +| scimark_sparse_mat_mult | 4.71 ms | 5.53 ms: 1.18x slower | +| async_generators | 377 ms | 446 ms: 1.18x slower | +| mdp | 2.36 sec | 2.81 sec: 1.19x slower | +| coverage | 83.0 ms | 99.3 ms: 1.20x slower | +| dulwich_log | 74.8 ms | 90.7 ms: 1.21x slower | +| xml_etree_process | 59.3 ms | 73.0 ms: 1.23x slower | +| pycparser | 1.12 sec | 1.39 sec: 1.24x slower | +| sqlglot_optimize | 52.7 ms | 65.9 ms: 1.25x slower | +| tomli_loads | 2.01 sec | 2.52 sec: 1.26x slower | +| sympy_sum | 156 ms | 195 ms: 1.26x slower | +| sqlglot_normalize | 106 ms | 133 ms: 1.26x slower | +| nqueens | 78.6 ms | 99.1 ms: 1.26x slower | +| thrift | 778 us | 990 us: 1.27x slower | +| regex_compile | 132 ms | 169 ms: 1.28x slower | +| sympy_integrate | 19.8 ms | 25.3 ms: 1.28x slower | +| sympy_expand | 457 ms | 591 ms: 1.29x slower | +| meteor_contest | 102 ms | 131 ms: 1.29x slower | +| genshi_xml | 48.8 ms | 63.6 ms: 1.30x slower | +| pprint_safe_repr | 738 ms | 963 ms: 1.31x slower | +| sympy_str | 275 ms | 359 ms: 1.31x slower | +| generators | 28.8 ms | 37.7 ms: 1.31x slower | +| crypto_pyaes | 67.9 ms | 89.7 ms: 1.32x slower | +| python_startup_no_site | 7.39 ms | 9.79 ms: 1.32x slower | +| json_dumps | 10.5 ms | 14.0 ms: 1.32x slower | +| fannkuch | 370 ms | 493 ms: 1.33x slower | +| pprint_pformat | 1.50 sec | 2.00 sec: 1.34x slower | +| typing_runtime_protocols | 155 us | 207 us: 1.34x slower | +| 2to3 | 260 ms | 350 ms: 1.35x slower | +| html5lib | 67.0 ms | 90.2 ms: 1.35x slower | +| create_gc_cycles | 1.34 ms | 1.84 ms: 1.38x slower | +| scimark_lu | 113 ms | 155 ms: 1.38x slower | +| genshi_text | 21.5 ms | 30.6 ms: 1.42x slower | +| django_template | 34.1 ms | 48.6 ms: 1.42x slower | +| python_startup | 11.0 ms | 15.7 ms: 1.43x slower | +| float | 77.5 ms | 112 ms: 1.44x slower | +| pyflate | 449 ms | 648 ms: 1.44x slower | +| richards_super | 51.6 ms | 74.7 ms: 1.45x slower | +| richards | 45.2 ms | 66.6 ms: 1.47x slower | +| logging_simple | 6.16 us | 9.10 us: 1.48x slower | +| logging_format | 6.84 us | 10.2 us: 1.49x slower | +| mako | 11.3 ms | 17.0 ms: 1.50x slower | +| nbody | 85.1 ms | 133 ms: 1.56x slower | +| unpickle_pure_python | 210 us | 330 us: 1.57x slower | +| hexiom | 5.99 ms | 9.52 ms: 1.59x slower | +| scimark_sor | 134 ms | 214 ms: 1.59x slower | +| scimark_monte_carlo | 65.4 ms | 105 ms: 1.61x slower | +| chaos | 57.3 ms | 93.9 ms: 1.64x slower | +| comprehensions | 16.5 us | 27.3 us: 1.66x slower | +| go | 141 ms | 236 ms: 1.68x slower | +| pickle_pure_python | 294 us | 499 us: 1.69x slower | +| sqlglot_transpile | 1.56 ms | 2.69 ms: 1.73x slower | +| logging_silent | 103 ns | 180 ns: 1.76x slower | +| sqlglot_parse | 1.25 ms | 2.34 ms: 1.88x slower | +| raytrace | 253 ms | 483 ms: 1.91x slower | +| deltablue | 3.12 ms | 7.31 ms: 2.34x slower | +| bench_thread_pool | 919 us | 3.39 ms: 3.69x slower | +| bench_mp_pool | 11.0 ms | 100 ms: 9.11x slower | +| Geometric mean | (ref) | 1.29x slower | + +Benchmark hidden because not significant (3): async_tree_none, asyncio_websockets, spectral_norm +Ignored benchmarks (14) of results/bm-20240906-3.13.0rc2-ec61006/bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006.json: aiohttp, asyncio_tcp, asyncio_tcp_ssl, chameleon, dask, flaskblogging, gunicorn, pickle, pickle_dict, pickle_list, tornado_http, unpack_sequence, unpickle, unpickle_list +Ignored benchmarks (8) of results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d.json: connected_components, k_core, many_optionals, shortest_path, sphinx, sqlalchemy_declarative, sqlalchemy_imperative, subparsers + +- Geometric mean (including insignificant results): 1.195x slower + +# HPT report + +- Reliability score: 100.00% likely to be slow +- 90% likely to have a slowdown of 1.19x +- 95% likely to have a slowdown of 1.18x +- 99% likely to have a slowdown of 1.15x + +# Memory +- memory change: 1.31x \ No newline at end of file diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.svg b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.svg new file mode 100644 index 00000000..3a56ea1c --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-3.13.0rc2.svg @@ -0,0 +1,2982 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base-mem.svg b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base-mem.svg new file mode 100644 index 00000000..a4210102 --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base-mem.svg @@ -0,0 +1,3748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.md b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.md new file mode 100644 index 00000000..51d4e0b0 --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.md @@ -0,0 +1,169 @@ +# Results vs. base + +- fork: Yhg1s +- ref: optimise_recursive_c +- machine: linux-x86_64 +- commit hash: b28153d +- commit date: 2024-12-20 +- overall geometric mean: 1.024x faster +- HPT reliability: 99.39% +- HPT 99th percentile: 1.00x faster +- Memory change: 0.99x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| 2to3 | 360 ms | 350 ms: 1.03x faster | +| docutils | 3.05 sec | 3.00 sec: 1.02x faster | +| html5lib | 91.4 ms | 90.2 ms: 1.01x faster | +| sphinx | 1.16 sec | 1.15 sec: 1.01x faster | +| Geometric mean | (ref) | 1.02x faster | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| async_tree_none | 352 ms | 351 ms: 1.01x faster | +| async_tree_cpu_io_mixed_tg | 572 ms | 575 ms: 1.00x slower | +| async_tree_cpu_io_mixed | 598 ms | 601 ms: 1.01x slower | +| coroutines | 24.0 ms | 24.2 ms: 1.01x slower | +| Geometric mean | (ref) | 1.00x slower | + +Benchmark hidden because not significant (7): async_tree_memoization, async_tree_io, async_tree_none_tg, async_tree_memoization_tg, async_generators, asyncio_websockets, async_tree_io_tg + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| float | 113 ms | 112 ms: 1.01x faster | +| pidigits | 181 ms | 181 ms: 1.00x slower | +| nbody | 127 ms | 133 ms: 1.05x slower | +| Geometric mean | (ref) | 1.01x slower | + +Benchmarks with tag 'regex': +============================ + +Benchmark hidden because not significant (4): regex_compile, regex_dna, regex_effbot, regex_v8 + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|---------------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| json_dumps | 14.3 ms | 14.0 ms: 1.02x faster | +| xml_etree_process | 73.4 ms | 73.0 ms: 1.01x faster | +| xml_etree_iterparse | 90.4 ms | 90.1 ms: 1.00x faster | +| xml_etree_parse | 129 ms | 130 ms: 1.01x slower | +| Geometric mean | (ref) | 1.00x faster | + +Benchmark hidden because not significant (5): tomli_loads, pickle_pure_python, xml_etree_generate, json_loads, unpickle_pure_python + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|------------------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| python_startup | 17.2 ms | 15.7 ms: 1.10x faster | +| python_startup_no_site | 10.2 ms | 9.79 ms: 1.04x faster | +| Geometric mean | (ref) | 1.07x faster | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|-----------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| django_template | 49.6 ms | 48.6 ms: 1.02x faster | +| mako | 17.1 ms | 17.0 ms: 1.01x faster | +| Geometric mean | (ref) | 1.01x faster | + +Benchmark hidden because not significant (2): genshi_xml, genshi_text + +All benchmarks: +=============== + +| Benchmark | bm-20241220-vultr-x86_64-python-78ffba4221dcb2e39fd5-3.14.0a3+-78ffba4 | bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d | +|----------------------------|:----------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| sympy_sum | 349 ms | 195 ms: 1.79x faster | +| sympy_expand | 951 ms | 591 ms: 1.61x faster | +| sympy_str | 478 ms | 359 ms: 1.33x faster | +| sympy_integrate | 29.6 ms | 25.3 ms: 1.17x faster | +| python_startup | 17.2 ms | 15.7 ms: 1.10x faster | +| sqlalchemy_declarative | 197 ms | 182 ms: 1.08x faster | +| bench_mp_pool | 108 ms | 100 ms: 1.07x faster | +| deltablue | 7.67 ms | 7.31 ms: 1.05x faster | +| pylint | 365 ms | 349 ms: 1.05x faster | +| python_startup_no_site | 10.2 ms | 9.79 ms: 1.04x faster | +| richards | 69.1 ms | 66.6 ms: 1.04x faster | +| go | 244 ms | 236 ms: 1.03x faster | +| 2to3 | 360 ms | 350 ms: 1.03x faster | +| raytrace | 497 ms | 483 ms: 1.03x faster | +| coverage | 102 ms | 99.3 ms: 1.03x faster | +| scimark_fft | 388 ms | 379 ms: 1.02x faster | +| scimark_sor | 219 ms | 214 ms: 1.02x faster | +| chaos | 96.1 ms | 93.9 ms: 1.02x faster | +| richards_super | 76.4 ms | 74.7 ms: 1.02x faster | +| json_dumps | 14.3 ms | 14.0 ms: 1.02x faster | +| comprehensions | 27.9 us | 27.3 us: 1.02x faster | +| generators | 38.4 ms | 37.7 ms: 1.02x faster | +| django_template | 49.6 ms | 48.6 ms: 1.02x faster | +| logging_silent | 184 ns | 180 ns: 1.02x faster | +| scimark_lu | 158 ms | 155 ms: 1.02x faster | +| docutils | 3.05 sec | 3.00 sec: 1.02x faster | +| hexiom | 9.66 ms | 9.52 ms: 1.02x faster | +| thrift | 1.00 ms | 990 us: 1.01x faster | +| scimark_monte_carlo | 107 ms | 105 ms: 1.01x faster | +| pathlib | 19.8 ms | 19.5 ms: 1.01x faster | +| sqlglot_parse | 2.38 ms | 2.34 ms: 1.01x faster | +| sqlite_synth | 2.14 us | 2.12 us: 1.01x faster | +| sqlglot_transpile | 2.73 ms | 2.69 ms: 1.01x faster | +| html5lib | 91.4 ms | 90.2 ms: 1.01x faster | +| json | 5.04 ms | 4.98 ms: 1.01x faster | +| logging_simple | 9.21 us | 9.10 us: 1.01x faster | +| many_optionals | 1.25 ms | 1.24 ms: 1.01x faster | +| pyflate | 655 ms | 648 ms: 1.01x faster | +| float | 113 ms | 112 ms: 1.01x faster | +| sphinx | 1.16 sec | 1.15 sec: 1.01x faster | +| deepcopy_reduce | 3.40 us | 3.38 us: 1.01x faster | +| subparsers | 28.9 ms | 28.7 ms: 1.01x faster | +| mako | 17.1 ms | 17.0 ms: 1.01x faster | +| xml_etree_process | 73.4 ms | 73.0 ms: 1.01x faster | +| async_tree_none | 352 ms | 351 ms: 1.01x faster | +| xml_etree_iterparse | 90.4 ms | 90.1 ms: 1.00x faster | +| pidigits | 181 ms | 181 ms: 1.00x slower | +| async_tree_cpu_io_mixed_tg | 572 ms | 575 ms: 1.00x slower | +| pprint_pformat | 1.99 sec | 2.00 sec: 1.00x slower | +| fannkuch | 490 ms | 493 ms: 1.00x slower | +| sqlglot_normalize | 133 ms | 133 ms: 1.01x slower | +| async_tree_cpu_io_mixed | 598 ms | 601 ms: 1.01x slower | +| bench_thread_pool | 3.38 ms | 3.39 ms: 1.01x slower | +| bpe_tokeniser | 4.99 sec | 5.02 sec: 1.01x slower | +| dulwich_log | 90.1 ms | 90.7 ms: 1.01x slower | +| pprint_safe_repr | 956 ms | 963 ms: 1.01x slower | +| spectral_norm | 111 ms | 111 ms: 1.01x slower | +| xml_etree_parse | 129 ms | 130 ms: 1.01x slower | +| coroutines | 24.0 ms | 24.2 ms: 1.01x slower | +| scimark_sparse_mat_mult | 5.47 ms | 5.53 ms: 1.01x slower | +| nqueens | 98.0 ms | 99.1 ms: 1.01x slower | +| deepcopy_memo | 39.9 us | 40.6 us: 1.02x slower | +| create_gc_cycles | 1.79 ms | 1.84 ms: 1.03x slower | +| nbody | 127 ms | 133 ms: 1.05x slower | +| gc_traversal | 3.26 ms | 3.51 ms: 1.08x slower | +| Geometric mean | (ref) | 1.02x faster | + +Benchmark hidden because not significant (31): regex_compile, connected_components, shortest_path, tomli_loads, logging_format, pickle_pure_python, async_tree_memoization, genshi_xml, xml_etree_generate, async_tree_io, json_loads, genshi_text, async_tree_none_tg, deepcopy, unpickle_pure_python, async_tree_memoization_tg, crypto_pyaes, regex_dna, mdp, async_generators, regex_effbot, sqlglot_optimize, telco, asyncio_websockets, async_tree_io_tg, k_core, meteor_contest, sqlalchemy_imperative, pycparser, regex_v8, typing_runtime_protocols + +- Geometric mean (including insignificant results): 1.024x faster + +# HPT report + +- Reliability score: 99.39% likely to be faster +- 90% likely to have a speedup of 1.00x +- 95% likely to have a speedup of 1.00x +- 99% likely to have a speedup of 1.00x + +# Memory +- memory change: 0.99x \ No newline at end of file diff --git a/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.svg b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.svg new file mode 100644 index 00000000..74dedc15 --- /dev/null +++ b/results/bm-20241220-3.14.0a3+-b28153d-NOGIL/bm-20241220-vultr-x86_64-Yhg1s-optimise_recursive_c-3.14.0a3+-b28153d-vs-base.svg @@ -0,0 +1,3432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +