如何有效地比较两个网络字节序u16或u32

汉克斯

比较两个网络字节序u16或u32的直接方法是将它们都转换为主机字节序,然后进行比较。

但是我正在研究一个性能至关重要的程序,我们有很多这样的情况。因此,我想知道如果我们只编写一个宏来从MSB逐字节比较它们会有所帮助吗?换句话说,通过添加额外的一个(对于u16)或额外的三个(对于u32)比较,我们可以避免两个ntoh调用。

这会有帮助吗?还是取决于硬件或编译器?有没有更好的方法可以做到这一点?

谢谢

PS:我理解,与整个程序相比,性能增强可能会很小,因此需要额外的复杂性。我只是对硬件的工作方式以及如何将其推向极致感兴趣:P

david.pfx

我将假设您只需要将此代码运行在一个处理器上,这很可能是小端的。

您需要4个比较函数,您可以将其编写为宏。当网络顺序与处理器顺序匹配时,两个比较整个字(短或长),在另一种情况下,两个比较字节。直接比较比转换然后比较要快。

如果您需要对EQ,LT,GT等进行单独比较,对于有符号/无符号的比较,您可能需要更多的组合才能获得最佳性能。我假设您知道如何编写代码,所以我不会尝试。

自然地,您应该对整个事情进行基准测试,以确保它确实值得!单元测试也很重要,因此不是一个简单的项目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何有效地比较Python中的两个列表?

来自分类Dev

如何在Java中有效地更改字节数组的字节序

来自分类Dev

有效地比较Scala集合中两个的所有组合

来自分类Dev

如何有效地比较两个DateTime并检查它们是否在同一天?

来自分类Dev

如何在R中有效地比较两个不同的列(都包含字符串)?

来自分类Dev

如何有效地比较同一类的两个对象,并检查它们是不同的领域?

来自分类Dev

如何使用python有效地匹配两个大列表之间的字符串?(510.000.000比较)

来自分类Dev

如何尽可能有效地比较两个不同长度的数组?

来自分类Dev

如何有效地在文件中写入大量的NULL字节序列?

来自分类Dev

如何有效地比较两个字典列表以宣布“赢家”

来自分类Dev

如何有效地同时从两个BLE设备读取温度?

来自分类Dev

如何有效地合并Emacs中的两个目录?

来自分类Dev

如何有效地输出两个交替字符或不循环?

来自分类Dev

如何有效地离开外部联接两个排序列表

来自分类Dev

如何在Java Me中有效地连接两个向量的数据?

来自分类Dev

如何有效地对两个矩阵进行索引和相乘?

来自分类Dev

如何有效地连接两个嵌套的ForiegnKey关系?

来自分类Dev

如何有效地检查两个选项是否已定义?

来自分类Dev

如何使用Json.NET有效地解析最多两个深度?

来自分类Dev

如何通过两个属性有效地获取唯一的较早的行?

来自分类Dev

如何有效地离开外部联接两个排序列表

来自分类Dev

如何通过id有效地映射两个对象列表

来自分类Dev

如何有效地将bash变量分为两个变量

来自分类Dev

如何有效地逐列乘以两个矩阵

来自分类Dev

python中的U8,U16,U32表示形式

来自分类Dev

Python 2.6:如何在一个特定字段上有效地比较两个相同对象类型的列表?

来自分类Dev

有效地比较两个大型列表的每个列表中的第一项?

来自分类Dev

如何有效地计算C中较长字节序列中一位的总数?

来自分类Dev

如何有效地计算C中较长字节序列中一位的总数?

Related 相关文章

  1. 1

    如何有效地比较Python中的两个列表?

  2. 2

    如何在Java中有效地更改字节数组的字节序

  3. 3

    有效地比较Scala集合中两个的所有组合

  4. 4

    如何有效地比较两个DateTime并检查它们是否在同一天?

  5. 5

    如何在R中有效地比较两个不同的列(都包含字符串)?

  6. 6

    如何有效地比较同一类的两个对象,并检查它们是不同的领域?

  7. 7

    如何使用python有效地匹配两个大列表之间的字符串?(510.000.000比较)

  8. 8

    如何尽可能有效地比较两个不同长度的数组?

  9. 9

    如何有效地在文件中写入大量的NULL字节序列?

  10. 10

    如何有效地比较两个字典列表以宣布“赢家”

  11. 11

    如何有效地同时从两个BLE设备读取温度?

  12. 12

    如何有效地合并Emacs中的两个目录?

  13. 13

    如何有效地输出两个交替字符或不循环?

  14. 14

    如何有效地离开外部联接两个排序列表

  15. 15

    如何在Java Me中有效地连接两个向量的数据?

  16. 16

    如何有效地对两个矩阵进行索引和相乘?

  17. 17

    如何有效地连接两个嵌套的ForiegnKey关系?

  18. 18

    如何有效地检查两个选项是否已定义?

  19. 19

    如何使用Json.NET有效地解析最多两个深度?

  20. 20

    如何通过两个属性有效地获取唯一的较早的行?

  21. 21

    如何有效地离开外部联接两个排序列表

  22. 22

    如何通过id有效地映射两个对象列表

  23. 23

    如何有效地将bash变量分为两个变量

  24. 24

    如何有效地逐列乘以两个矩阵

  25. 25

    python中的U8,U16,U32表示形式

  26. 26

    Python 2.6:如何在一个特定字段上有效地比较两个相同对象类型的列表?

  27. 27

    有效地比较两个大型列表的每个列表中的第一项?

  28. 28

    如何有效地计算C中较长字节序列中一位的总数?

  29. 29

    如何有效地计算C中较长字节序列中一位的总数?

热门标签

归档