Search Results for 'Optimizing Compiler'

2 POSTS

  1. 2008.05.13 Dynamic Profiling 2
  2. 2006.09.13 최적화 컴파일러

Dynamic Profiling

Posted 2008. 5. 13. 04:14
JIT를 제공하는 Java Server VM이 정적으로 컴파일된 C/C++ 수준 혹은 그 이상의 성능을 보일 수 있는 중요한 이유 중에 하나는 런타임에 수집한 데이터를 가지고 컴파일을 최적화하기 때문입니다.

다음 코드를 예로 봅시다.

for (i = 0 ; i < 10; i++) {
    if (cond) {
        g();
    } else {
        h():
    }
}

루프 안의 g 혹은 h 함수를 inline 할지 말지 결정하려면 cond이 true일 확률이 높은지 false인 확률이 높은지 알 수 있어야 합니다. 만약 cond가 거의 항상 true라면 g를 inline하고 h는 그냥 두어야 할 것입니다. 하지만 런타임 정보가 없는 C/C++ 컴파일러은 이런 최적화를 수행하기는 힘듭니다.

이런 한계 때문에 요즘은 일반적인 컴파일러들도 런타임 정보를 활용해 추가적인 최적화를 하기도 합니다. 일례로 인텔 컴파일러는 바이너리가 동적 프로파일링(dynamic profiling)을 수행하도록 한 번 컴파일한 후에, 이를 실행해 얻은 프로파일링 데이터를 바탕으로 다시 한 번 컴파일해 최적화된 코드를 생성할 수도 있습니다.


최적화 컴파일러

Posted 2006. 9. 13. 01:20
최적화 컴파일러(Optimzing Compiler)는 전산계의 로켓 과학이므로 많은 개발자의 로망일 것입니다. 앞으로 공부도 할 겸 시간날 때마다 컴파일러 최적화에 대한 글을 써보려고 합니다! 관심 부탁드려요.