Boost logo

Boost :

Subject: Re: [boost] [Endian] Performance
From: Phil Endecott (spam_from_boost_dev_at_[hidden])
Date: 2011-09-06 12:28:09


Mathias Gaunard wrote:
> On 06/09/2011 00:38, Phil Endecott wrote:
>
>> #elif defined(USE_BEMAN)
>>
>> const char* s (reinterpret_cast<const char*>(&src));
>> uint32_t target;
>> char * t (reinterpret_cast<char*>(&target) + sizeof(target) - 1);
>> *t = *s;
>> *--t = *++s;
>> *--t = *++s;
>> *--t = *++s;
>> return target;
>
> Why isn't that just std::reverse?

Well std::reverse is in-place, and this particular code is not. But
yes, std::reverse could be used for some of Beman's functions, and some
sort of std::copy with reverse iterators could be used here. There are
also places where the code could be more concise if std::swap were used.

Fundamentally though, I don't think that casting to bytes is the right
way to do this; shifts and bitwise ops seem to produce better code, and
involve less worrying casting.

Regards, Phil.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk