gpt4 book ai didi

endianness - 为什么条件字节顺序不好?

转载 作者:行者123 更新时间:2023-12-01 02:10:18 25 4
gpt4 key购买 nike

莱纳斯声称[ 1 2 ] 条件字节顺序比傻更糟糕。

我首先想到的是ZFS但肯定还有其他例子。

他写了:

The only sane model is to specify one fixed byte order. Seriously. It's equally portable, it generates better code - even on architectures that then have to unconditionally do byte order swapping - and it's simpler to add static type checks for etc. It's literally less code and faster to do a "bswap" instruction than to do a conditional test of some variable (even if you can then avoid the bswap dynamically)



我认为条件字节顺序可能会生成更长的代码,但在使用相同字节顺序的机器上应该更快。似乎他的大部分观点都是关于代码美学的。我不是专家,所以我想看看他的观点更详细的解释。

最佳答案

你要求解释 Linus 的说法。你误认为他们是关于美学的。

当 Linus 说“[固定字节顺序] 生成更好的代码”时,他主要是在谈论更好(即更快)的机器代码。

当他说“添加静态类型检查等更简单”时他可能在谈论 C 源代码,但这不是美学问题。更简单的代码更容易理解,更容易维护,并且有更少的 bug 表面积。通常(但不总是)它还会生成更好的机器代码。

当他说“执行'bswap'指令比对某些变量进行条件测试更快”时,他再次谈论机器代码,基本上说能够以 native 顺序获取数据对你没有好处,性能 -明智的做法是,如果您不能依赖数据按 native 顺序排列。他声称,最好能够依赖 中的数据。错了 order 而不是在使用它之前必须测试它的顺序。

Linus 认为,即使协议(protocol)选择的字节顺序与机器的 native 字节顺序不同,上述所有内容也适用。在该对话的其他地方,他和其他人观察到,即使数据不是按 native 字节顺序排列的,您也可以对其执行许多不关心字节顺序的操作。此外,如果您事先知道字节顺序是什么,那么对于其他一些操作,可以在编译时以避免运行时字节交换的方式适应该顺序。

Linus 的论点很有说服力。

关于endianness - 为什么条件字节顺序不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com