Slow LC 9 Performance - Test Stack, Video, QA Report
Curry Kenworthy
curry at pair.com
Wed Sep 5 00:45:53 EDT 2018
LiveCode 9 (as of 9.0.1 RC 3) is significantly slower than LiveCode 6.7
in a variety of tasks. This is a huge problem, it affects many of the
projects I'm doing, and I'm sure others are in the same boat. Fellow
boat members: please join my bug report/feature request below!
The slowdown can be demonstrated both in test code and in real-world
applications. The problem(s) may be in a specific area, but the actual
effects on running code are widespread and fairly general, impacting
multiple areas in my testing from math and loops to text, chunks, and
arrays. I am posting some resources tonight to help draw attention and
evaluate this problem, and requesting that LiveCode 9 be optimized to
achieve at least speed parity with LiveCode 6 in these areas.
(I am encouraged that some LC engine optimization impacting arrays is
already underway by LC Mark W., but I want to emphasize and prove beyond
doubt that several areas are affected and not only arrays. Therefore I
hope this bug reports and test stack(s) will help to confirm whether the
optimizations underway also solve the other areas, or whether those
areas need further separate optimization.)
Resources below.
A) QA Bug or Feature Request:
https://quality.livecode.com/show_bug.cgi?id=21561
Report on this problem (which negatively impacts end users for existing
features) with 2 recipes and downloads (test demo code and real world
application). If your own app or code is affected by LC 9 performance,
please add your CC and a comment.
B) YouTube video: LC Version "Showdown"
https://youtu.be/8uhOem46VXg
Thorough demonstration and discussion of my tests and the results,
pitting LiveCode 6.7 against the latest release of LiveCode 9 in several
tasks that evaluate loops, math, text appends, array access, item
chunks, and text replace.
JavaScript code is also tested and provided to provide additional
reference. (Thanks Richard G. for the suggestion! Very interesting results.)
C) LC Version "Showdown" demo stack:
http://curryk.com/showdown.zip
The stack used in the video. See and test the code for yourself.
Compares 6.7 and LC 9 (or others, you can use 7 or 8 too) for speed in
loops, math, text appends, array access, item chunks, and text replace.
(Also has effects used in video competition; this issue has been on my
to-do list for some time, and I wanted a stack that looks good, makes
comparisons quick and easy, and can serve as a useful platform for
current and future tests.)
Some buttons have right-click or shift-click alternatives, these are
listed in tooltips. If desired, paste the JavaScript (which is
automatically placed on the clipboard after each test) into js.do or
another web page to compare the JS speed to LC.
BTW, I'm only days away from a new WordLib release and have been doing a
great deal of cross-version testing with it too. That, and Mark's array
effort, were what prompted me to make extra time for this and get it
posted today. WordReport is also due for an update, so is WordOut, and
performance is something I take very seriously. Beyond that, I place the
highest importance on all client app performance too.
WordLib code uses a variety of the code areas mentioned here, some
arrays but not relying on them heavily in the work, so I consider it a
good balanced real-world example of the impact of LC 9 performance. It's
pretty hard-hit for big files, because many or most operations in LC 9
take 2x, 3x, or 4x the time compared to LC 6. (In fact I think it's
somewhat challenging to find substantial code that is NOT hit by LC 9
performance. I found one example in 9's favor to include in the showdown
stack and video.)
So again I wanted to emphasize it's not just arrays - that is proven
here beyond any doubt in downloadable code and on video. I hope the
array optimizations might help the other areas too, but if not, they
need attention. Thank you! :)
Best wishes,
Curry Kenworthy
Custom Software Development
LiveCode Training and Consulting
http://livecodeconsulting.com/
More information about the use-livecode
mailing list