When we moved from single platform to multiple platform, we removed
many optimizations to first get a working system.
v3 was highly tuned for Actionscript 2 (swf5/6/7/8), but we had to
tear a lot of internals apart and rebuild them with more layers of
abstraction to add support for Javascript (DHTML) and Actionscript 3
(swf9). The cost was is lost performance, especially in swf8, where
much of the Class support is implemented at run time (rather than at
compile time as in swf9). We think this was the right decision,
because we expect swf9 and ECMAScript 5 to have better and better
class support and to become more popular.
We are now doing a lot of tuning to try to improve the performance of
the system on all platforms.
This is related to http://jira.openlaszlo.org/jira/browse/LPP-6599
which is a long-standing issue that we continue to work on.
On 2009-05-07, at 03:45EDT, ono keiji wrote:
I did the instance create test on v3.3.3 and v4.3.0.
Surprisingly v4.3.0 was slow than v3.3.3.
Why dose it?
[Test Case]
By using the attachment and take their mean time [msec].
[Result]
On Windows FireFox v3.0
v.3.3.3 v4.3.0
swf8 733 4,103
swf9 - 910
swf10 - 893
On Windows IE7
v.3.3.3 v4.3.0
swf8 488 3,257
swf9 - 571
swf10 - 698
Ono Keiji
[email protected]
<?xml version="1.0" encoding="UTF-8"?>
<canvas debug="true">
<script>
var t1 = new Date();
var st = t1.getTime();
</script>
<class name="myLabel">
<attribute name="label" type="string"/>
<attribute name="labelx"/>
<attribute name="labely"/>
<text text="${classroot.label}" x="${classroot.labelx}" y="$
{classroot.labely}"/>
<edittext width="200" x="50" y="${classroot.labely}"/>
</class>
<class name="Win" extends="window" x="250" y="0" width="300"
height="250" title="Win">
<myLabel name="label1" label="${this.name}" labelx="10"
labely="20"/>
<myLabel name="label2" label="${this.name}" labelx="10"
labely="50"/>
<myLabel name="label3" label="${this.name}" labelx="10"
labely="80"/>
<myLabel name="label4" label="${this.name}" labelx="10"
labely="110"/>
<myLabel name="label5" label="${this.name}" labelx="10"
labely="140"/>
</class>
<handler name="oninit">
<![CDATA[
for( var i=0; i<10; i++){
var w = new lz.Win();
}
var t2 = new Date();
var et = t2.getTime();
var dt = et - st;
Debug.write( "init time[ms]: ", dt );
]]>
</handler>
</canvas>