2014-11-01 4 views
-3

수십억 번 계산을 반복해야합니다. 해결 단순 함수의
은 :어떻게 부분 함수를 다시 계산할 수 있습니까?

X = (Y의 *의 Z/m)^N

사용자가 지정한 3 4 개 변수 중 Y, Z, m, n은 런타임에. 네 번째 변수는 코드의 다른 위치에서 해결되고 각 반복을 변경합니다.

초기화 중에 알려진 변수를 사전 계산하고 방정식의 축소 된 형식 만 반복하는 C++의 방법이 있습니까?

기본적으로 런타임시 컴파일 타임이 아닌 예외를 제외하고는 템플릿 메타 프로그래밍과 같은 것을 찾고 있습니다.

+0

편집 : 명확성을 위해 3/4 – Chris

+0

Vincent - 어떻게 접근해야하는지 잘 모르겠습니다. 통찰력을 환영합니다. 현재 사용자는 모든 실행에 대한 코드를 다시 컴파일하고 상수는 템플릿에서 사전 계산됩니다. – Chris

+0

편집 : 문제는 어떤 변수가 상수인지에 대한 기존의 지식이 없다는 것입니다. "any of 3 of 4"추가를 참조하십시오. – Chris

답변

0

짧은 대답은 '예 :

네 개의 다른 개체, 각각의 가능한 감소에 의해 구현 된 인터페이스를 확인합니다. 초기화시에 어떤 상수가 주어 졌는지에 따라 관련 구현 클래스를 생성하고이를 싱글 톤 객체로 만듭니다. 그런 다음 축소 된 함수를 반복적으로 호출 할 수 있습니다.

=========

, 당신은 이미 윤곽을하지 않는 마이크로 최적화의이 유형을 시도 할 필요가 없다고 말했다 가졌어요. 3/4 매개 변수를 사용하여 수백만 배의 함수를 실제로 호출하는 경우 컴파일러가 이미이를 최적화하는 데 매우 효율적입니다. 항상 새로운 "똑똑한"솔루션이 실제로 더 빠른 지 확인하기 위해 테스트하십시오. 보장은 거의 없습니다.

관련 문제