On Sunday 15 April 2007, Johannes Schindelin wrote: > On Sun, 15 Apr 2007, Shawn O. Pearce wrote: > > static int simple_length(const char *match) > > { > > - const char special[256] = { > > - [0] = 1, ['?'] = 1, > > - ['\\'] = 1, ['*'] = 1, > > - ['['] = 1 > > - }; > > int len = -1; > > > > for (;;) { > > unsigned char c = *match++; > > len++; > > - if (special[c]) > > + switch (c) { > > + case 0: case '?': > > + case '\\': case '*': > > + case '[': > > return len; > > + } > > } > > } > > You are replacing a table-based check with a switch based, which might be > substantially slower (depends on how often cmp_name() is called). Or faster. When the table gives a cache miss and has to be loaded from main memory, I am quite sure that 5 compares in a row are faster than the cache miss. Actually, with the switch, the compiler is free to implement it with a table (and gcc usually does this, probably even using a substantially smaller table). The table-based check in contrast looks like some kind of micro-optimization which makes the code IMHO more difficult to read, and which only would be justified with meassured improvements. Josef - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html