JIT 컴파일러 따라잡기: 인라인 캐시 최적화의 잘못된 약속

2025-03-13
JIT 컴파일러 따라잡기: 인라인 캐시 최적화의 잘못된 약속

본 논문은 동적 바이너리 수정(DBM)을 추가하여 Ahead-of-Time(AoT) 컴파일러의 성능을 향상시킬 수 있는지 조사합니다. 연구자들은 Hopc AoT JavaScript 컴파일러에 DBM 기반 인라인 캐시(IC) 최적화를 구현했지만, 실험 결과 성능이 향상되지 않았습니다. 이 연구는 메모리 접근을 줄이는 것이 현대 아키텍처에서 항상 실행 속도를 높이는 것은 아니라는 것을 발견했습니다. 이는 기존의 최적화 전략에 의문을 제기하며, 정교한 컴파일러 최적화는 프로세서가 코드를 자체적으로 가속화할 수 없는 경우에만 가치가 있다는 결론에 도달했습니다. 이 발견은 AoT 컴파일러와 JIT 컴파일러 모두에 적용됩니다.

더 보기

타입 클래스의 일관성: Swift, Rust, Scala, Haskell 비교

2025-03-12
타입 클래스의 일관성: Swift, Rust, Scala, Haskell 비교

타입 클래스는 Haskell, Swift, Rust, Scala와 같은 언어에서 사용되는 일반적인 프로그래밍 기법입니다. 하지만 편리한 암시적 프로그래밍은 타입 추론의 모호성을 야기하여 일관성(프로그램이 정확히 하나의 의미를 갖는 성질)을 해칠 수 있습니다. 연구 커뮤니티는 의견이 분분합니다. 맥락에 의존적인 해결책을 지지하는 쪽과 모호성을 피하기 위해 전역적으로 고유한 인스턴스를 주장하는 쪽이 있습니다. 본 논문에서는 이 네 가지 언어가 타입 클래스의 일관성을 다루는 방식을 비교하여, 구문상의 차이에도 불구하고 고유한 인스턴스의 제한을 우회하는 전략이 놀라울 정도로 유사함을 밝힙니다.

더 보기