[Laszlo-dev] Javascript optimization hints [Was: [Laszlo-checkins] r5888 - in openlaszlo/branches/wafflecone: WEB-INF/lps/lfc/data WEB-INF/lps/lfc/events WEB-INF/lps/lfc/views lps/components/base]
P T Withington
ptw at openlaszlo.org
Wed Aug 1 09:59:11 PDT 2007
Sorry, no. You can't make type decls yet.
On 2007-08-01, at 11:47 EDT, Max Carlson wrote:
> Thanks for the tips - it's always good to have a reminder :).
>
> Just so I'm clear, we can now use JS2 type declarations:
>
> var uplinkArray: Array;
>
> but they'll be ignored (for now). Is this correct?
>
> If so, it'll be a good task for someone to go through the LFC and
> add type annotations sooner rather than later!
>
> P T Withington wrote:
>> Since the compiler does not do common-subexpression elimination,
>> when you are trying to optimize things, pretend you are writing in
>> 1985 C. Instead of:
>> if (d.c[d.f]) d.c[d.f]( sd )
>> say:
>> var f = d.c[d.f];
>> if (f) f(sd);
>> Even better, when you find yourself having to write a null check,
>> ask yourself if it would be cleaner, simpler, and more efficient
>> to have the variable you are referencing not be nullable. For
>> instance, if a variable is an array, consider using an empty array
>> for its initial value, rather than null. This is a time/space
>> trade-off: if there are many operations on the array and the
>> variable is almost always not null, it will be more efficient to
>> use an empty array; if there are few operations and the variable
>> is usually null, then not allocating the empty array is the better
>> choice.
>> (In Javascript 2, you will have the option of declaring a variable
>> to be of a particular type, and you will have the option of
>> declaring wether or not that variable can also be null. If you
>> declare it not to be nullable, then the compiler will give you a
>> compile-time warning if it cannot prove that the variable is never
>> null, and it will insert the appropriate runtime check for you.
>> // This can be null, you have to check before using
>> var uplinkArray: Array;
>> // This cannot be null, you have to give a valid initial value
>> var uplinkArray: Array! = new Array();
>> Even though we don't yet support the type declarations, we can
>> follow the pattern and be ready...)
>
> --
> Regards,
> Max Carlson
> OpenLaszlo.org
More information about the Laszlo-dev
mailing list