It is not the break let/ex that slows it down. But for wha it's worth we do not do a let/ec if no break is used. Now.
On Sun, 25 Apr 2021, 10:20 Mikael Djurfeldt <mik...@djurfeldt.com> wrote: > Nice! > > I guess it would be nice if "continue" *could* be compiled efficiently. > And, as you indicate, perhaps that would amount to efficiently compiling > let/ec. > > Best regards, > Mikael > > On Sat, Apr 24, 2021 at 5:19 PM Stefan Israelsson Tampe < > stefan.ita...@gmail.com> wrote: > >> Guile is 3x faster then fastest python-on-guile which is 2x faster then >> python3 Cpython >> >> attached is a guile corresponding program. >> >> On Sat, Apr 24, 2021 at 4:41 PM Stefan Israelsson Tampe < >> stefan.ita...@gmail.com> wrote: >> >>> 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.ita...@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.ita...@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 < >>>>> mik...@djurfeldt.com> 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 <mik...@djurfeldt.com> >>>>>> 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 >>>>>>> >>>>>>>