On Mon, Apr 28, 2014 at 12:51 PM, Jonathan Wakely <jwak...@redhat.com> wrote: > The next thing I plan to look at, which I haven't done yet, is to see > if passing the __match_mode template parameter as a runtime function > parameter makes any difference to the way the code is structuted. Do > you have any thoughts in that, before I waste time doing something > that won't work?
The thing behind the template parameter is like this: 0) We have DFS and BFS executor; 1) To be DRY, I write one class for those two approaches. We have to use some option variable (__match_mode) in a function (say _Executor::_M_dfs) to distingush one approach from another. 2) Keep checking the flag at runtime hurts efficiency, so a template flag is used. However, it turns out that it's not clear that if __match_mode is frequently asked (in _Executor::_M_main and the _S_opcode_accept branch in _Executor::_M_dfs). If we want to change it to a runtime flag, it should be a class member. Otherwise we have to pass it as a function parameter all the time, and it may waste an instruction and one byte per recursive call. It surely make the code cleaner. Am I premature optimizing? -- Regards, Tim Shen