2009-07-08 4 views

답변

3
  1. 는 구현에 따라 달라집니다. 무엇 일반적으로 일어나는 것은 :이 최적화 및 다양한 장단점과 코드에 적용 할 수있는 다른 코드 변환의 무리, 그리고이 선언은 이러한 개별 변환으로 변환되는 높은 수준의 사양으로 사용됩니다. 대부분의 구현에서는 개별 설정을 제어 할 수는 있지만 이식 할 수는 없습니다. 계획에
  2. 는 일부 구성표가 유사한 방법을 사용하더라도, 그러한 표준 시설이 없습니다. 문제는 일반적으로 (즉, 표준에서) Scheme이 그러한 "현실 세계"문제를 피하는 것입니다. 여기 저기에 몇 가지 최적화 기법을 사용할 수도 있지만 구현에 따라 다릅니다. 예를 들어, PLT에서 가장 먼저해야 할 일은 코드가 모듈에 정의되어 있는지 확인하는 것입니다. 이렇게하면 컴파일러가 인라인 및 루프 전개와 같은 많은 최적화 작업을 수행 할 수 있습니다.
+0

당신은 간단하게 "여기 저기 최적화 기법"을 언급했다. 프로그램을 가능한 한 효율적으로 만드는 것에 대해 더 많이 배울 수있는 책이나 장소가 있습니까? – unj2

+0

@ kunjaan : Eli가 말했듯이 조언이 상당히 다양하기 때문에 사용하고있는 Lisp/스키마 구현에 대해 더 자세히 말해야합니다. – khedron

+0

kunjaan : 물론 컴파일러와 최적화에 대한 많은 책이 있습니다. 당신이 타겟팅하는 언어와 심지어 플랫폼에 따라 그것들은 매우 다를 수 있습니다. –

1

높은 속도 설정은 컴파일러가 상수 폴딩, 컴파일 타임 유형 추론 (따라서 일반 연산에 대한 런타임 동적 디스패치 제거) 및 기타 코드 분석/변환에 더욱 열심히 작용합니다. 낮은 안전성, 자세한 내용 등 런타임 타입 확인 어레이 바운드 검사를 스킵하고 모두 CMUCLSBCL (다소)에 적용 CMUCL User's Manual Advanced Compiler Use and Efficiency Hints 장을 참조한다.

1

나도 몰라,하지만 난 당신이 탐구하려는 경우 SBCL internals wiki 일부 시작점이있을 수 있습니다 생각합니다.