语言特点:优化布尔以标志+位掩码
-
05-07-2019 - |
题
我正在写一个编程语言,并且当我碰到 这个问题, 我立即想到的是这种语言应该优化布尔成点的标志程序员。这将让所有的利益的速度和高效率的存储器使用,同时除去负担的维修和可能性的错误引起的更多复杂的位的操纵。
第一种情况下,你可能想不具有这种优化是如果你有一个情况下,只有一组的布尔被存储。基本上,如果你有 8 bits for flags + 8 bit masks * 8 bits per bit mask = 72 bits
而不是的 8 booleans * 8 bits per boolean = 64 bits
.但只要你们甚至两份布尔,就变成 2 copies * 8 bits for flags + 8 bit masks * 8 bits per bit mask = 80 bits
与 2 copies * 8 booleans * 8 bits per boolean = 128 bits
.这似乎是少数的情况下,布尔会更储存最佳的会很容易检测这样一个可能 不 适用的优化。
是否有任何原因,这种语言不支持这一优化?我环顾四周,它似乎没有任何语言(我可以只要不被打在正确的地方)。
解决方案
我见过人这样做在大会的语言,他们包布尔变成文字的保存空间,并随后写的很多指令,以获取/设置的位。
显然有一个折衷的速度和存储器中间包装布尔,并没有包装,以及我个人很害羞的一个编译器,试图决定这对我来说。
其他提示
C不会...
#include <stdio.h>
typedef struct foo_s {
unsigned char field1 :1;
unsigned char field2 :1;
unsigned char field3 :4;
unsigned char field4 :2;
} foo_t;
int main() {
printf("%d\n", sizeof(foo_t));
return 0;
}
时运行,这四个领域获得装成一个字:
$ gcc -Wall -o bittest bittest.c
$ ./bittest
1
不隶属于 StackOverflow