gpt4 book ai didi

软件中的位级操作可以是 "fast"吗?

转载 作者:行者123 更新时间:2023-11-30 20:45:11 26 4
gpt4 key购买 nike

让我立即澄清一下这个听起来很温和的标题。这实际上已经困扰我很长一段时间了,尽管感觉这是一个非常基本的问题。

许多语言让开发人员玩弄位,从而给人一种效率错误的印象,例如 bool.h据我了解,C header 本质上只是一个带有包装器的 int 。本质上,字节似乎是 C 语言中绝对最低的计算原子单位 - bool x = 0并不比 int x = 0 更快/更高的内存效率.

我想知道的是,当我们想要实现一种本质上与加载和操作单个位相关的算法时,我们该怎么做,例如解码二进制代码、未加权的图连接问题等等?换句话说,字节的原子性是现代 CPU 的固有属性,还是我们可以通过使用机器代码在理论上与 ASIC 的效率相媲美?

编辑:对否决票感到非常惊讶,但我想人们只是不明白我在问什么。我认为一个非常好的、规范的例子是遍历二叉树(或者任何其他是/否问题的顺序列表)。我想知道的是,现代 cpu 架构是否从根本上没有能力做到这一点(即与 ASIC/FPGA 相比),或者这是否是某些抽象层(语言/内核/等)的产物。马克的回答很好(尽管我希望引用所提到的架构扩展)

最佳答案

不,您无法与 ASIC 的效率相媲美。 ASIC 意味着您可以根据芯片上的预算复制并行比特流。您只需剪切并粘贴 HDL,直到填满芯片空间。 CPU 的核心数量有限。

我猜你认为像 z = (x|(1<<y)>>4 这样的位运算速度很慢,是的,所有的位移都是额外的开销。但这只是访问位。位运算(OR、AND 等)的速度与现代 CPU 上的速度一样快,即 1 个周期的吞吐量。

8051 架构有一种直接访问各个位的方法,无需使用字节寄存器,但如果您担心速度,则不会考虑 8051。

关于软件中的位级操作可以是 "fast"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41577110/

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