-
Notifications
You must be signed in to change notification settings - Fork 514
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
First round of performance improvements #138
Comments
These are done and merged locally. I'll push them to master early next week when I'm back from a mini-vacation so that I don't break master without being there to fix it :) I'll post some results also at that time. |
The first round of performance improvements is now in master, the changes made are in the issue description. Below is a rough measurement of the effects on several small testcases:
Overall performance is mostly close to e.g. Python which has a similar refcount and mark-and-sweep approach. Call handling is still somewhat slow and wasn't addressed in this round of changes. There's a considerable gap to Lua with some of that gap fixable (e.g. bytecode executor inefficiencies) and some not (e.g. additional processing needed by reference counting, more complex property and scope semantics, Unicode handling, etc). Note that these performance testcases are not representative of real applications - the intent is to test individual aspects so that it's easier to see potential areas of improvement.
|
The changes in this issue are now in master and follow-up work is in #139, so I'll close this. |
Holy crap is MuJS slow! As in, 1 to 2 orders of magnitude slower compared to Duktape... I am curious how the string interning tests could be O(0) in MuJS though... |
@fatcerberus Well it's slower in some tests and faster in others, there's a trade-off for every design decision :) AFAIK mujs doesn't implement a "fast array" which then naturally impacts all tests that deal with arrays. How that translates to practical code is of course a different matter, and depends on what kind of code one is running. The string intern tests are 0.00 seconds because they are Duktape-specific (they use a buffer value to setup data to intern), so they error out with mujs. |
The text was updated successfully, but these errors were encountered: