프로그래밍 언어를 쓰고 있는데 this question을 만나면 즉시 언어가 프로그래머를 위해 부울을 비트 플래그로 최적화해야한다는 생각이 들었습니다. 이렇게하면 유지 보수의 부담과 복잡한 비트 조작으로 인한 오류 가능성을 제거하면서 속도와 효율적인 메모리 사용의 모든 이점을 유지할 수 있습니다.언어 기능 : 플래그 + 비트 마스크에 대한 부울 최적화
이 최적화가 필요하지 않은 경우는 저장된 부울 집합이 하나 뿐인 경우입니다. 기본적으로 8 booleans * 8 bits per boolean = 64 bits
대신 8 bits for flags + 8 bit masks * 8 bits per bit mask = 72 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
이됩니다. boolean 값이 더 많은 스토리지 최적이 될 수있는 몇 가지 경우처럼 쉽게 감지 할 수 있으므로 이 아닌 최적화를 적용 할 수 있습니다.
언어가이 최적화를 지원하지 않는 이유가 있습니까? 나는 주변을 둘러 보았고 어떤 언어도하지 않는 것 같습니다 (나는 올바른 장소를 보지 않고있을 수도 있습니다).
컴파일러는 당신을 위해 훨씬 더 큰 의사 결정의 모든 시간을, 그리고 그들은 옳다. 나는 왜 이런 특별한 최적화가 결코 만들어지지 않았는지 궁금해하고있다. 심지어 C#과 Java에서도 그렇다. – Imagist
@imagist : 어쩌면 저는 "대다수의 하나"라고 생각하지만, 컴파일러의 공격적인 최적화에 대해서는 감사하지 않습니다. 거의 항상 잘못되어 있습니다. 정말 진지한 최적화가 내 직업입니다. 컴파일러에서 "좋은 코드"를 생성하지만 실제 생각은 그대로 남겨두기를 원합니다. –
@mike 그 생각의 문제는 요즘 컴파일러를 최적화하는 것이 인간이 할 수있는 것보다 빠르고 정확하고 효과적이라는 것입니다. – Imagist