<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>+1</div><div><br></div><div>..Tom<br><br>Sent from my iPhone</div><div><br>On 2013-04-03, at 11:16, "thomas bonfort" <<a href="mailto:thomas.bonfort@gmail.com">thomas.bonfort@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">While profiling the openstreetmap renderings, I found a relatively low hanging performance speedup related to expressions when doing class filtering. The context relates to when you'd need to apply a given CLASS to multiple attribute values.<div>
Currently, to apply a single class to multiple values of an attribute, you can either use regular expressions, or use the IN operator, like this:<br><div><br></div><div style="">LAYER</div><div style=""> ...</div><div style=""> CLASSITEM "type"</div>
<div style=""> CLASS</div><div style=""> EXPRESSION /primary|secondary|tertiary/ #regular expression on CLASSITEM</div><div style=""> EXPRESSION ("[type]" IN "primary,secondary,tertiary") #"complex" parser expression</div>
<div style=""> ...</div><div style=""> END</div><div style="">END</div></div><div style=""><br></div><div style="">Both methods require quite a bit of overhead, either in the regex system calls, or by using quite a few mallocs when going through the IN parser operation.</div>
<div style=""><br></div><div style="">We can cut down on this overhead by adding a "list" expression type, denoted by the { } delimiters, where the previous layer definition becomes:</div><div style=""><br></div><div style="">
LAYER</div><div> ...</div><div> CLASSITEM "type"</div><div> CLASS</div><div> EXPRESSION {primary,secondary,tertiary}</div><div> ...</div><div> END</div><div>END</div><div><br></div><div style="">The modifications to the code are fairly straightforward, and no backwards incompatibilities are expected as this is a new functionality that does not collide with previous mapserver expressions.</div>
<div style="">The changes can be seen here:</div><div style=""><a href="https://github.com/tbonfort/mapserver/commit/fae435d17b099485ab6792bfae3a7d8dd8992b4c">https://github.com/tbonfort/mapserver/commit/fae435d17b099485ab6792bfae3a7d8dd8992b4c</a> . (you can ignore the changes to mapparser.*, they correct a bug in the IN parser and aren't related to the list operator)</div>
<div style=""><br></div><div style="">Our parser guru is OK with these changes, so I would like to vote to include this new expression for our 6.4 release.</div><div style=""><br></div><div style="">I'll start with my +1</div><div style="">
<br></div><div style="">best regards,</div><div style="">thomas</div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>mapserver-dev mailing list</span><br><span><a href="mailto:mapserver-dev@lists.osgeo.org">mapserver-dev@lists.osgeo.org</a></span><br><span><a href="http://lists.osgeo.org/mailman/listinfo/mapserver-dev">http://lists.osgeo.org/mailman/listinfo/mapserver-dev</a></span><br></div></blockquote></body></html>