<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>