On 9/15/2021 12:23 PM, Mostowski Collapse wrote:
I really wonder why my Python implementation
is a factor 40 slower than my JavaScript implementation.
Structurally its the same code.
You can check yourself:
Python Version:
https://github.com/jburse/dogelog-moon/blob/main/devel/runtimepy/machine.py
JavaScript Version:
https://github.com/jburse/dogelog-moon/blob/main/devel/runtime/machine.js
Its the same while, if-then-else, etc.. its the same
classes Variable, Compound etc.. Maybe I could speed
it up by some details. For example to create an array
of length n, I use in Python:
temp = [NotImplemented] * code[pos]
pos += 1
Whereas in JavaScript I use, also
in exec_build2():
temp = new Array(code[pos++]);
So I hear Guido doesn't like ++. So in Python I use +=
and a separate statement as a workaround. But otherwise,
what about the creation of an array,
is the the idiom [_] * _ slow? I am assuming its
compiled away. Or does it really first create an
array of size 1 and then enlarge it?
I'm sure you know you can put in timing statements to find bottlenecks.
import time
startTime = time.perf_counter()
[code block]
print("%.2f" % (time.perf_counter() - startTime))
--
https://mail.python.org/mailman/listinfo/python-list