嗨,我正在使用C++/Boost ASIO,我必须内联ntohl()性能原因.每个数据包包含256个int32,因此有很多调用ntohl().有没有人这样做过?
这是VC10 ++中编译的程序集输出,所有优化都打开:
;  int32_t d = boost::asio::detail::socket_ops::network_to_host_long(*pdw++);
mov      esi, DWORD PTR _pdw$[esp+64]
mov      eax, DWORD PTR [esi]
push     eax
call     DWORD PTR __imp__ntohl@4
我也试过了ntohl()winsock提供的常规.任何帮助将不胜感激.  
另外,我一直在考虑使用#define宏来执行简单的int32桶移位的C方式(如果网络顺序与编译时的机器顺序不匹配).如果有人知道并且可以ntohl()在x86/x64架构上提供最有效的组件,那将是非常棒的.最终我的代码也需要可移植到ARM.