Comparison of Speed of LiveCode with PHP
Geoff Canyon
gcanyon at gmail.com
Mon Nov 24 10:31:53 EST 2014
My PHP is weak, but if the memory access test is a regular array, then
comparing it to a livecode array is somewhat apples and oranges, since LC
is really a hash. But on the other hand, there's no way to do a simple
array in LC, so it's not like you can do better.
For the file access test, your test is pretty much apples to apples, but it
would be interesting to compare it to URL access: build the whole string
and write it out, then read the whole thing in and split it. That wouldn't
be a fair comparison, but it would be interesting.
gc
On Sun, Nov 23, 2014 at 9:33 PM, Peter W A Wood <peterwawood at gmail.com>
wrote:
> In a previous email Richard Gaskin, the LiveCode Community Manager, wrote
> "Given the role of memory and performance for scaling, if we want to see LC
> Server taken seriously as a professional server tool we need to identify
> and eliminate any significant performance difference between it and PHP.”
>
> I thought that it would be worth spending a little time to compare the
> speed of LiveCode against the speed of PHP. I came up with a test based
> loosely on Carl Sassenrath’s Rebol Speed Script (
> http://www.rebol.com/cgi-bin/blog.r?view=0506 ). I have found it a useful
> base for writing comparative scripts (either comparing languages on a
> single machine or comparing machines using a single language). It is far
> from perfect in a multi-tasking environment but I believe provides decent
> comparative data.
>
> I have attached two scripts, speedtest.lc and speedtest.php. I’m sure
> that both could be improved significantly and welcome such improvements.
> The results of running the two scripts on my machine, LiveCode 7.0.0-rc-3
> and PHP 5.5.14 are:
>
> Schulz:LiveCodeServer peter$ ./speedtest.lc
> LiveCode Speed Test Started
> The CPU test took: 2851 ms
> The Memory test took: 3656 ms
> The File System test took: 1975 ms
> LiveCode Speed Test Finished
>
> Schulz:LiveCodeServer peter$ ./speedtest.php
> PHP Speed Test Started
> The CPU test took: 3921 ms
> The Memory test took: 1200 ms
> The File System test took: 666 ms
> PHP Speed Test Finished
>
> So it seems the LiveCode has the edge on PHP when it comes to calculations
> but not on memory access or file access.
>
> The memory test relies on using arrays, I'm not sure if that is the best
> way to test memory access.
>
> Regards
>
> Peter
>
> Speedtest.lc
>
> #!livecode
>
> if the platform = "MacOS" then
> set the outputLineEndings to "lf"
> end if
>
> put "LiveCode Speed Test Started" & return
>
> ##cpu test
> put the millisecs into tStart
> repeat with i = 1 to 10000000
> put sqrt(exp(i)) into tTemp
> end repeat
> put the millisecs into tEnd
> put "The CPU test took: " && tEnd - tStart && "ms" & return
>
> ##Memory Access
> put the millisecs into tStart
> repeat with i = 1 to 1000000
> put random(255) into tMem[i]
> end repeat
> put the millisecs into tEnd
> put "The Memory test took: " && tEnd - tStart && "ms" & return
>
> ##Filesystem
> open file "test.tmp"
> put the millisecs into tStart
> repeat with i = 1 to 100000
> write "This is a test of the write speed" && random(255) to file
> "test.tmp"
> read from file "test.tmp" for 1 line
> end repeat
> put the millisecs into tEnd
> put "The File System test took:" && tEnd - tStart && "ms" & return
> delete file "test.tmp"
>
> ##Finish
> put "LiveCode Speed Test Finished" & return
>
> Speedtest.php
>
> #!/usr/bin/php
>
> <?php
>
> print "PHP Speed Test Started\n";
>
> //cpu test
> $start = microtime(true);
> for( $i = 0; $i < 10000000; $i++ ) {
> $temp = sqrt(exp($i));
> }
> $end = microtime(true);
> $time = ($end - $start) * 1000 + 0.5;
> printf("The CPU test took: %5.0f ms\n", $time);
>
> //Memory Access
> $start = microtime(true);
> for( $i = 0; $i < 1000000; $i++ ) {
> $mem[i] = rand(0, 255);
> }
> $end = microtime(true);
> $time = ($end - $start) * 1000 + 0.5;
> printf("The Memory test took: %5.0f ms\n", $time);
>
> //Filesystem
> $file = fopen("test.tmp", "w+");
> $start = microtime(true);
> for( $i = 0; $i < 100000; $i++ ) {
> rewind($file);
> fwrite($file, "This is a test of the write speed".rand(0,255));
> fread($file, 34);
> }
> $end = microtime(true);
> $time = ($end - $start) * 1000 + 0.5;
> printf("The File System test took: %5.0f ms\n", $time);
> unlink("test.tmp");
>
> //Finish
> print "PHP Speed Test Finished\n";
>
> ?>
>
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list