我正在編寫一種編程語言,當我遇到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