目前我有这个功能来交换数据的字节以改变字节顺序。
template<typename Type, unsigned int Half = sizeof(Type)/2, unsigned int End = sizeof(Type)-1>
inline void swapBytes(Type& x)
{
char* c = reinterpret_cast<char*>(&x);
char tmp;
for (unsigned int i = 0; i < Half; ++i) {
tmp = c[i];
c[i] = c[End-i];
c[End-i] = tmp;
}
}
这个函数会被我的一些算法调用几百万次。因此,可以避免的每条指令都是一件好事。
我的问题是:如何优化这个功能?