Skip to content

Conversation

@skirpichev
Copy link
Member

No description provided.

@skirpichev
Copy link
Member Author

Benchmark 3.13-ref 3.13-patch
(mpz(1<<7))**2 273 ns 330 ns: 1.21x slower
(mpz(1<<38))**2 274 ns 326 ns: 1.19x slower
(mpz(1<<300))**2 340 ns 392 ns: 1.15x slower
(mpz(1<<3000))**2 3.75 us 3.92 us: 1.05x slower
Geometric mean (ref) 1.15x slower
Benchmark 3.14-ref 3.14-patch
(mpz(1<<7))**2 254 ns 315 ns: 1.24x slower
(mpz(1<<38))**2 254 ns 315 ns: 1.24x slower
(mpz(1<<300))**2 323 ns 381 ns: 1.18x slower
(mpz(1<<3000))**2 3.82 us 3.96 us: 1.03x slower
Geometric mean (ref) 1.17x slower
Details
$ echo $CFLAGS 
-std=c11 -Wall -Wpedantic -Werror -O3
$ python3.13 -c "import sysconfig; print(sysconfig.get_config_var('CONFIG_ARGS'))"
'--enable-optimizations' '--with-system-libmpdec'
# bench.py
from operator import mul

import gmp
import pyperf


runner = pyperf.Runner()
for v in ["1<<7", "1<<38", "1<<300", "1<<3000"]:
    i = eval(v)
    bn = "(mpz("+v+"))**2"
    x = gmp.mpz(i)
    runner.bench_func(bn, mul, x, x)

@skirpichev skirpichev closed this Jul 18, 2025
@skirpichev skirpichev deleted the heap-type branch July 18, 2025 01:18
@skirpichev skirpichev restored the heap-type branch July 26, 2025 06:08
@skirpichev skirpichev reopened this Jul 26, 2025
@skirpichev skirpichev force-pushed the heap-type branch 2 times, most recently from 9f3dbc6 to 871829c Compare July 27, 2025 03:22
@skirpichev skirpichev force-pushed the heap-type branch 3 times, most recently from ab3ed5a to 7214077 Compare July 27, 2025 14:53
@skirpichev skirpichev closed this Jul 27, 2025
@skirpichev skirpichev deleted the heap-type branch July 27, 2025 15:38
@skirpichev skirpichev restored the heap-type branch July 30, 2025 02:29
@skirpichev skirpichev reopened this Jul 30, 2025
@skirpichev skirpichev closed this Aug 3, 2025
@skirpichev skirpichev deleted the heap-type branch August 3, 2025 07:46
@skirpichev skirpichev restored the heap-type branch August 5, 2025 04:01
@skirpichev skirpichev reopened this Aug 5, 2025
@skirpichev
Copy link
Member Author

Another benchmark:

Benchmark ref heap-type
collatz(97) 124 us 169 us: 1.37x slower
collatz(871) 186 us 255 us: 1.37x slower
Geometric mean (ref) 1.37x slower
# bench.py
import pyperf
from gmp import mpz

zero = mpz(0)
one = mpz(1)
two = mpz(2)
three = mpz(3)

# https://en.wikipedia.org/wiki/Collatz_conjecture
def collatz(n):
    total = zero
    n = mpz(n)
    while n > 1:
        n = n*three + one if n & one else n//two
        total += one
    return total

runner = pyperf.Runner()
for i in [97, 871]:
    h = f"collatz({i})"
    runner.bench_func(h, collatz, i)

@skirpichev skirpichev closed this Aug 5, 2025
@skirpichev skirpichev deleted the heap-type branch August 5, 2025 04:21
@skirpichev skirpichev restored the heap-type branch August 16, 2025 11:09
@skirpichev skirpichev reopened this Aug 16, 2025
@skirpichev skirpichev closed this Aug 16, 2025
@skirpichev skirpichev deleted the heap-type branch August 16, 2025 12:08
@skirpichev skirpichev restored the heap-type branch August 30, 2025 07:14
@skirpichev skirpichev reopened this Aug 30, 2025
@skirpichev skirpichev closed this Aug 30, 2025
@skirpichev skirpichev deleted the heap-type branch August 30, 2025 09:31
@skirpichev skirpichev restored the heap-type branch January 15, 2026 07:28
@skirpichev skirpichev reopened this Jan 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant