Hacker News 의견
  • {fmt}는 기본적으로 로케일에 독립적임
  • 부동 소수점 형식화에 많은 코드가 필요함
    • Dragonbox 프로젝트는 최적화된 코드로 읽어볼 가치가 있음
  • C++의 기본 할당자는 malloc과 free를 사용하지 않음
    • libc++의 기본 할당자가 libc의 malloc과 free를 호출하지 않는 이유를 궁금해함
  • printf(Hello, World!\n")을 1008 바이트의 실행 파일 크기로 가능하게 하는 프로젝트가 있음
    • 직접 비교는 어렵지만 참고할 만함
  • 빈 main 함수가 있는 C 프로그램이 6kB인 시스템에서 {fmt}는 바이너리에 10kB 미만을 추가함
    • 흥미로운 테스트임
  • 작은 형식화 라이브러리가 문자열과 정수를 출력하는 데 약 50 바이트가 필요할 것이라고 기대했음
    • 문자열은 약 4개의 명령어로 구성됨
    • 정수는 약 20개의 명령어로 구성됨
    • 부동 소수점은 많은 프로그램에서 사용되지 않으므로 필요할 때만 컴파일해야 함
    • 마이크로컨트롤러 코드 공간이 2킬로바이트인 경우 14킬로바이트의 문자열 형식화 라이브러리를 포함하지 않음
  • 이러한 생각의 틀을 벗어난 최적화가 매우 즐거움
  • "14k"가 "14kB"를 의미한다는 것을 깨닫는 데 시간이 걸렸음
  • fmt는 항상 문제를 일으킴
    • .NET에서도 동일한 문제가 발생함
    • 숫자 형식화/파싱을 많이 다루면 링커가 많은 부동 소수점 및 BigInt 관련 코드를 포함하게 되어 바이너리 크기가 커짐