2017-11-12 1 views
0

이것은 매우 새내기와 같은 느낌이지만 갑자기 자신이 우둔하다는 것을 알게됩니다. 많은 메모리 복사본을 수행하는 C 응용 프로그램의 프로필을 작성하려고하는데이 번호를 줄이기위한 옵션이 있습니다 (일부 재 설계가 필요함). 그만한 가치가 있는지 알기 위해 노력하고 있지만 어떤 자원에 영향을 미치는지, 또는 어떻게 모니터 할 것인지 잘 모릅니다.memcpy()를 사용할 때 주로 사용되는 HW 리소스는 무엇입니까?

누군가가 어떤 리소스 (그리고 Linux에서 어떻게 모니터링하는지)를 알고 있거나 Agner 나 다른 최적화 매뉴얼의 섹션에 대한 언급이 있다면 나는 그것을 매우 고맙게 생각합니다. 감사.

답변

1

memcpy은 한 버퍼에서 다른 버퍼로 메모리를 복사하기 위해 CPU을 사용합니다. 일반적으로 코드 memcpy을 많이 사용하는 코드는 CPU에 바인딩됩니다.

이렇게 말하면 일부 기본 디자인은이 점을 다르게 만들 수 있습니다. 특히 많은 양의 메모리를 복사하는 경우 메모리를 한 번 사용하고 버리는 경우 일 수 있습니다. 그렇다면 CPU의 데이터 캐시를 제대로 사용하지 않는 것입니다. 메모리를 그대로 유지하는 알고리즘으로 전환하면 큰 도움이 될 것입니다.

프로파일 링에 관해서는 valgrind가 캐시 효율성을 확인하는 도구를 가지고 있다는 것을 알고 있습니다. 아마 다른 사람들도.

관련 문제