| ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
原始链接: https://news.ycombinator.com/item?id=43421815
Hacker News 的讨论探讨了为什么有些语言使用一个完整的字节(8 位)来表示布尔类型,而不是单个位。虽然只使用一位更节省空间,但由于 CPU 访问内存的方式,它通常速度较慢。内存是以较大的块(至少一个字节)读取的,因此访问单个位需要额外的指令来隔离和修改它,这涉及读-修改-写操作。 虽然结构体中的位域允许将布尔值打包到单个位中,但它们不可移植,并且不能直接指向。此外,加载单个位会拉取整个缓存行,因此使用 sum 类型可能更好地利用内存。最终,选择取决于内存使用量、速度和目标平台之间的权衡,在现代内存丰富的系统中,更简单、更快的基于字节的表示通常更受欢迎。原子性也是一个需要考虑的因素。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |