Subject: bug#72688: big lets are deathly slow

From: spacecadet <[email-masked]>
Date: Sat, 17 Aug 2024 20:47:03 +0000

performance of let seems to be about O(n^2) for n bindings

bash script to reproduce

range="$1"
time guile --no-auto-compile <( printf "(let ("; for i in $(seq 0 $range); do printf "(foo%s 'bar)" $i; done; printf ") '())" )

$ ./let.sh 10000

real    0m1.059s
user    0m1.306s
sys     0m0.064s

$ ./let.sh 20000

real    0m3.901s
user    0m4.197s
sys     0m0.078s

$ ./let.sh 40000

real    0m14.955s
user    0m15.707s
sys     0m0.188s

$ ./let.sh 80000
./let.sh: line 2:  6182 Segmentation fault      guile --no-auto-compile <( printf '(let ('; for i in $(seq 0 $range); do printf '(foo%s '"'"'bar)' $i; done; printf ") '())" )

real    0m58.146s
user    0m59.156s
sys     0m0.326s