Hello all,

Andreas and I worked on different things yesterday but with a common
need to get a functionality that allows to convert strings including
variable elements ("text + ${propertyName} + text" for example) into
literal strings with some feature attribute values.

Andreas finally wrote a createLiteral method available in both the
ahocevar/sldRenderer and camptocamp/text sandboxes.
I proposed him a patch for this method to make the most of regexp. He
gladly accepted this patch but also asked for benchs to be sure that
my method is better because he knows that regex execution is slow in
JS.

This is what I did, and the results are instructive. Comments below
and test HTML file should be available at
http://dev.openlayers.org/sandbox/camptocamp/text/examples/regex.html.

The Andreas method is better when it deals with features including few
attributes. My method isn't impacted by the number of attributes.
Though, when the string contains several variables to replace, my
method seem to have a better performance later.

In my opinion, it's really odd to have a code closely dependent to the
number of attributes. What if the user loads a GML file with features
having 20 attributes, which might be usually the case ?
Moreover, in most cases, user will want to replace only one single
variable in the string. In that case, my method is not the best only
when the feature has one single attribute.

But, the "while" statement is probably not the best implementation.
Andreas was surprised seeing it. If regex gurus can have a look, I
would be really pleased.
The reason I did that is because the number of variables is not known
before. There might be a better and simpler way to do that.

One more question : do we need to test it in IE too ?

--------------------------------------
benchmark results :

${name}
        feature
                returned value : foo
                andreas' method: 30ms
                returned value : foo
                pierre's method: 42ms
        feature2
                returned value : foo
                andreas' method: 71ms
                returned value : foo
                pierre's method: 40ms
        feature3
                returned value : foo
                andreas' method: 149ms
                returned value : foo
                pierre's method: 41ms
                regex.html (line 72)
name: ${name}, age: ${age}, address: ${address}, status: ${status}
        feature
                returned value : name: foo, age: ${age}, address: ${address},
status: ${status}
                andreas' method: 32ms
                returned value : name: foo, age: undefined, address: undefined,
status: undefined
                pierre's method: 155ms
        feature2
                returned value : name: foo, age: 20, address: somewhere, 
status: single
                andreas' method: 114ms
                returned value : name: foo, age: 20, address: somewhere, 
status: single
                pierre's method: 148ms
        feature3
                returned value : name: foo, age: 20, address: somewhere, 
status: single
                andreas' method: 595ms
                returned value : name: foo, age: 20, address: somewhere, 
status: single
                pierre's method: 149ms
_______________________________________________
Dev mailing list
[email protected]
http://openlayers.org/mailman/listinfo/dev

Reply via email to