Wil*_*sem 5 c# algorithm performance assembly endianness
我在C#中有一个uint类型数组,在检查程序是否在小端机器上运行之后,我想将数据转换为big-endian类型.因为数据量可能变得非常大但总是均匀,我想考虑将两种uint类型作为ulong类型,以获得更好的性能并在ASM中对其进行编程,因此我搜索的速度非常快(如果可能的话,速度最快) )汇编程序算法转换big-endian的big-endian.
对于大量的数据,所述bswap指令(下可用在Visual C++ _byteswap_ushort,_byteswap_ulong和_byteswap_uint64内在)是去的方式.这甚至会超过手写组装.没有P/Invoke的纯C#中没有这些,所以:
PS:很多人都不知道字节交换内在函数.它们的性能令人惊讶,对于浮点数据来说是双倍的,因为它将它们作为整数处理.如果不为每个单字节交换用例手动编码寄存器负载,就没有办法击败它,如果你尝试这样做,你可能会在优化器中产生比你想要的更大的命中.
| 归档时间: |
|
| 查看次数: |
4193 次 |
| 最近记录: |