▲neo 3달전 | parent | favorite | on: GN⁺: {fmt} 축소: 이진 크기 14k로 줄이고 C++ 런타임 제거(vitaut.net)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 관련 코드를 포함하게 되어 바이너리 크기가 커짐
Hacker News 의견