By rearranging the fields the memory usage per type was reduced as follows:
Parser 24 -> 16 bytes
QueryError 24 -> 8 bytes
QueryCapture 16 -> 8 bytes
QueryMatch 16 -> 8 bytes
readFuncsMap 16 -> 8 bytes
In practice, unless you capture the matches for the entire tree at once (AND the tree is large) there won't be any difference. However, typically you'd use cursor.SetPointRange() and focus on a particular area of the tree, so these savings won't be observed in practice unless somehow you are creating lots of QueryCapture and QueryMatch nodes.
Oh, and also added a TODO note, there's something in there that looks out of place and needs to be investigated further (a useless break statement).
By rearranging the fields the memory usage per type was reduced as follows:
Parser
24 -> 16 bytesQueryError
24 -> 8 bytesQueryCapture
16 -> 8 bytesQueryMatch
16 -> 8 bytesreadFuncsMap
16 -> 8 bytesIn practice, unless you capture the matches for the entire tree at once (AND the tree is large) there won't be any difference. However, typically you'd use
cursor.SetPointRange()
and focus on a particular area of the tree, so these savings won't be observed in practice unless somehow you are creating lots ofQueryCapture
andQueryMatch
nodes.Oh, and also added a TODO note, there's something in there that looks out of place and needs to be investigated further (a useless break statement).