我正在编写一种编程语言,当我遇到this question时,我的直接想法是语言应该将布尔值优化为程序员的位标志。这将保持速度和高效内存使用的所有好处,同时消除维护的负担以及由更复杂的位操作引起的错误的可能性。语言功能:优化布尔值为标志+位掩码
您可能不希望进行此优化的一种情况是,如果您遇到只存储一组布尔值的情况。基本上,如果你有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#和Java让你更大的决定的时候,而且他们往往不是。我只是想知道为什么这个特定的优化从未做过(即使在C#和Java中)。 – Imagist 2009-09-11 02:19:56
@imagist:也许我是一个“多数人”,但我不理解编译器的积极优化。它几乎总是错位。真正认真的优化是我的工作。我希望编译器做的是生成“好代码”,但将真正的想法留给我。 – 2009-09-11 02:47:04
@mike这个想法的问题在于,这些天优化编译器比人类更快,更准确,更有效。 – Imagist 2009-09-17 12:12:30