On Wednesday, June 12, 2013 1:08:22 PM UTC-5, LCD 47 wrote: > > You can do it in one comparison with this trick: > > > > if ((unsigned)c - '0' < 10) > > Actually, the second version is a bit slower than the first. :) A > comparison is exactly as fast as a subtraction of the same length, and > (unsigned)c - '0' needs to store the result in memory. >
It's not just two comparisons, it's two comparisons plus an "and", so there's some extra branch logic for the two-comparison method. I don't know whether the extra branch is more expensive than the memory store using the comparison plus a subtraction method. You'd probably need profiling on a big test case to figure that out. Either way we're talking one or two cycles at most. Eliminating the isalpha() etc. calls was the biggest save here, and avoiding a big lookup table loaded in memory. -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
