1
는 프리 페치와 코드를 최적화하고 일부 함수 호출하기 전에 프리 페치를 배치 가능 높은 최적화 좋은 C 컴파일러 그것을 가능 :C 컴파일러는 호출과 관련하여 데이터를 프리 페치 할 수 있습니까?
그래서struct *abc;
//...
function_first(&(abc->field1));
abc->field2= abc->field3+ abc->field4 + abc->field5 + ...;
// a lot work on struct fields
function_second(&(abc->field1))
, 컴파일러 최적화 후 코딩 할 수 있습니다 것은 abc
필드와 이동에 대한 프리 페치를하는 그것은 이런 이상 function_first()
통화 :
function_first()
는
clean
로 주석 될 수
struct *abc;
//...
__prefetch(abc->field2);__prefetch(abc->field5);
function_first(&(abc->field1));
abc->field2= abc->field3+ abc->field4 + abc->field5 + ...;
// a lot work on struct fields
function_second(&(abc->field1))
(필드 1 이외 ABC 필드에 아무런 부작용이없는) 또는 programm에는 전체 PROG 컴파일 될 수있다 컴파일러가 확인할 수있는 RAM 최적화 (-ipo/Qipo for intel)는 function_first
이 수행합니다.
업데이트 : 통화없이 프리 페치는 가능하지만이 질문은 혼합 통화에 대해하고
감사 인출을 수행하는 장점이있다.
폴은 호출 전에 프리 페치를 이동할 수 있습니까? – osgx
당신은 그것을 시험해보고해야 할 것입니다. 프리 페치는 극소수의 경우를 제외하고는 제한적으로 사용되는 경향이 있습니다. –
이 질문은 호출하기 전에 프리 페치를 이동하는 것에 관한 것입니다. 현재 인텔 컴파일러가 설치되어 있지 않으므로 사용해 볼 수 없습니다. – osgx