Just a quick follow-up from the development team here at LiveCode.
Internally, we're aware that there are some synthetic workloads that benchmark worse on 7.0.x than on 6.7.x. However, we're still looking for evidence of significant, widespread degradation in performance on real-world workloads. It's going to be very hard for us to justify spending a large amount of engineering effort on performance improvements if its unlikely to have significant impact across the user base.
If you've got an example of a practical, real-world workload that has slowed down a lot when moving from 6.7.x to 7.0.x, please file a bug report. I'm happy for you to contact me directly (
peter@livecode.com) if you have stacks or datasets that you can't share on the bug tracker.
A very small number of people have been reporting a huge amount of slowdown moving from 6.7.x to 7.0.x on real-world or even trivial workloads. This has been reported specifically for
LiveCode server in CGI mode, running on Dreamhost servers. This was reported as
Bug 13983. We know that these users have been affected quite badly, and even completely trivial scripts are now taking multiple seconds to complete.
I've therefore performed some local testing to see if I can identify a problem.
I used this test script:
Code: Select all
<?lc
local tLoop
repeat with tLoop = 1 to 1000
put "Hello world! It's " & the long time & linefeed
end repeat
?>
First, I tested running in "normal" server mode, using the command-line:
Code: Select all
$ time /path/to/livecode-community-server test.lc > /dev/null
Secondly, I tested running in a synthetic CGI environment, using a wrapper script that sets the CGI environment variables.
The wrapper script is called "test_server_dummy.sh":
Code: Select all
#/bin/bash
CONTENT='username=My%20Username&password=Not%20My%20Password&form_submitted=true'
export AUTH_TYPE=""
export CONTENT_LENGTH=${#CONTENT}
export CONTENT_TYPE="application/x-www-form-urlencoded"
export GATEWAY_INTERFACE="CGI/1.1"
export PATH_INFO=""
export PATH_TRANSLATED=$(readlink -f $1)
export QUERY_STRING=""
export REMOTE_ADDR="127.0.0.1"
export REMOTE_HOST="localhost"
export REMOTE_IDENT=""
export REMOTE_USER=""
export REQUEST_METHOD="POST"
export SCRIPT_NAME=""
export SERVER_NAME="localhost"
export SERVER_PORT="80"
export SERVER_PROTOCOL="HTTP/1.1"
export SERVER_SOFTWARE="bash"
echo "$CONTENT" | $SERVER $PATH_TRANSLATED
The test was run in CGI mode using the command line:
Code: Select all
$ time SERVER="/path/to/livecode-community-server" ./test_server_dummy.sh test.lc
Each test was run three times and the third run-time was used (in order to ensure that all caches were hot and that I wasn't benchmarking my HDD's fragmentation).
The results are as follows:
Code: Select all
7.0.2 rc 1 i686 0.013 s
7.0.2 rc 1 cgi i686 0.017 s
7.0.2 rc 1 x86-64 0.019 s
7.0.2 rc 1 cgi x86-64 0.022 s
6.7.2 rc 2 i686 0.008 s
6.7.2 rc 2 cgi i686 0.012 s
As you can see:
- the cost of running in CGI mode is unchanged from 6.7.x to 7.0.x
- running in 64-bit mode is slower that running in 32-bit mode (which is to be expected, because 64-bit requires moving roughly twice as much data around all of the time)
- 7.0.x is slower that 6.7.x for this task but it is *not* suddenly taking seconds where it previously took milliseconds.
These results suggest that there is performance degradation in 7.0.x relative to 6.7.x, but there may be other factors causing the extreme slowdown that some users are reporting.
For people who are looking for a hosted, fully-supported LiveCode 7 solution, we are expecting to start providing LiveCode 7 hosting soon via
On-Rev.