To note is that 'continue' is killing performance for python-on-guile programs, so by changing the code to not use continue lead to python-on-guile running twice the speed of python3. The reason is that the while loop is used as (while (...) (let/ec continue ...)) And the let/ec is probably not optimally compiled. Python-on-guile will check the loop for continue usage and if not then it will skip the let/ec. I attached the code not using continue On Sat, Apr 24, 2021 at 2:59 PM Stefan Israelsson Tampe < stefan.itampe@gmail.com> wrote: > Actually changing in (language python compile), > > (define (letec f) > (let/ec x (f x)))) > > To > > (define-syntax-rule (letec f) > (let/ec x (f x)))) > > Actually lead to similar speeds as python3. > > > > On Sat, Apr 24, 2021 at 1:26 PM Stefan Israelsson Tampe < > stefan.itampe@gmail.com> wrote: > >> Pro tip, when running this on guile the scheme code that it compilse to >> is located in log.txt. >> If you ,opt the resulting code in a guile session you might be able to >> pinpoint issues that >> delays the code execution. >> >> On Sat, Apr 24, 2021 at 12:04 PM Mikael Djurfeldt >> wrote: >> >>> (I should perhaps add that my script doesn't benchmark the object system >>> but rather loops, conditionals and integer arithmetic.) >>> >>> Den fre 23 apr. 2021 17:00Mikael Djurfeldt skrev: >>> >>>> Hi, >>>> >>>> Yesterday, Andy committed new code to the compiler, some of which >>>> concerned skipping some arity checking. >>>> >>>> Also, Stefan meanwhile committed something called "reworked object >>>> system" to his python-on-guile. >>>> >>>> Sorry for coming with unspecific information (don't have time to track >>>> down the details) but I noticed that my benchmark script written in Python, >>>> and which computes the 20:th Ramanujan number, now runs 60% faster than >>>> before these changes. >>>> >>>> This means that python-on-guile running on guile3 master executes >>>> python code only 2.6 times slower than the CPython python3 interpreter >>>> itself. :-) >>>> >>>> Have a nice weekend all, >>>> Mikael >>>> >>>>