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.


Raspunde prin e-mail lui