[ros-dev] ping Alex regarding log2() for scheduler
Royce Mitchell III
royce3 at ev1.net
Wed Mar 23 16:57:36 CET 2005
Mark Junker wrote:
> Royce Mitchell III schrieb:
>
>> I managed to shave off another comparison in favor of a shift:
>
>
> What about using a 64k table?
>
> static
> BYTE HighestBits[65536] = {
> 0x00, 0x01, 0x02, 0x02, ... // and so on
> };
>
> // returns 0xFF when no bits set in dwValue
> BYTE highest_bit(DWORD dwValue)
> {
> BYTE ret;
> if (i > 0xffff) {
> ret = HighestBits[(int) (dwValue >> 16)];
> } else {
> ret = HighestBits[(int) dwValue];
> }
> return ret - 1;
> }
>
> Regards,
> Mark
>
There's a couple bugs in your code, but...
The table lookups are a little bit faster when they take full advantage
of available cpu caching. I'm not sure that they are good enough to
continue to fare well when put into our target environment ( at least
once per interrupt/thread schedule ). Besides, it's wasting a lot of
npool ram for a slight performance improvement.
More information about the Ros-dev
mailing list