Hi
I have a question about improving performance
(I’m very happy already, I think is absolutely fast enough, its just that I could improve by doing things differently)
I assume the is_in() function requires extra calculations and lookups which may cost time as well calculating unnecessary rules
(That could already be a wrong assumption)
Maybe an expert could just say what would be better in general. No need to prove or test. I tried myself some things which actually did not make a big difference.
For example I moved the rules for buildings to the top of the style and expected serious improvements, because buildings are the majority of polygons in the PBF
But I gained only a little bit (3-5%? max) and even one out of 4 runs it was even a bit slower. So mkgmap must be very optimized already was my conclusion
Question 1) ‘unnecessary’ processing rules
Answer A
Walk through 100 rules about highways when it’s a waterway or railway and just wait for rule 101
Answer B
Introduce an extra IF, which causes extra calculation itself but skips the 100 rules
IF (highway = *) Then
Highway 1,2,3,4,5,6,7,8-100
END
Waterway = river [0x18 resolution 22]
Question 2) Help mkgmap to avoid calculation of possible expensive calculations? Or is it already smart enough to not start the IS_IN() if “name = *” failed
already
Answer A
waterway = river & name = * & is_in(natural, sea, any) = true [0x18 resolution 22]
Answer B
If (waterway = river) then
name = * & is_in(natural, sea, any) = true [0x18 resolution 22]
End if
Thx,
Joris Bo