내 프로젝트에서 일부 코드의 속도를 높이기 위해 SSE를 사용할 것을 고려하고 있습니다. 이것은 보통 내가 작업하고있는 데이터의 16 바이트 정렬을 필요로합니다. 정적 할당을 위해 나는 __declspec(align(16))
이 문제를 해결하지만 내 문제는 다음과 같다고 가정합니다 : 동적 할당을 할 때 가장 좋은 방법은 무엇입니까? 특히 할당 된 객체가 정렬을 직접 요구하지는 않지만 정렬 요구 사항이있는 객체를 멤버로 사용하므로 (올바르게 정렬되었는지 잊어 버리는 것이 훨씬 쉽습니다). 나는 다음과 같은 해결책을했다 : 정렬 된 멤버가있는 개체의 동적 할당 - 가능한 솔루션?
- 항상 잠재적으로 비 정적으로 할당 된 데이터가 정렬되지 않은 것으로 가정하고 정렬되지 않은로드 명령을 사용합니다. 내가 읽은 것에서 이것은 느리고 이것이이 경우 SSE에 신경 쓰지 않을 수도 있습니다. 구현할 수는 있지만 수행 방법을 테스트 할 수는 있지만 가치있는 것이 아니라 다른 솔루션이 있다는 것을 알기 위해 많은 노력을 기울이기 전에 더 나은 솔루션에 대해 물어볼 것입니다.
맞춤을 필요로하는 개체와이를 개체로 사용하는 개체를 할당하려면 매우 신중해야하며
_aligned_malloc
/_aligned_free
만 사용해야합니다. 이것은 아마도 잊기 쉽고 따라서 오류가 발생하기 쉽습니다.new
/delete
과부하는 전 세계적으로 및/또는 메모리를 정렬하고 모두를위한들을 사용하는 사용자 정의
malloc
/free
기능을 만들 수 있습니다. 그러나 글자 그대로 을 모두에 동적으로 할당하는 것이 가장 좋은 방법은 아닙니다.오버플로 된 기본 클래스를 만들고
new
/delete
연산자를 사용하고 정렬이 필요한 클래스와이를 사용하는 클래스를 상속 받아야합니다. 대부분의/모든 동적 할당에new
/delete
을 사용하면됩니다. 아마도 덜 오류가 발생하기 쉬운 것 같습니다.다른 방법으로 생각하지 않았거나 인식하지 못했습니다.
옵션 1.-3. 아마 최고의 아이디어가 아닙니다. 4.는 어때? 내가 언급 한 것에 대해 내가 틀린가? 이 주제에 대한 제안, 의견, 유용한 링크?
사전 : Windows에서
왜 필요한 회원들을 정렬하지 않습니까? 더 쉽게 살 수 있습니다. – Xeo
만약 당신이 (그리고'__declspec (정렬)'또는 유사한 작업을 어떻게하는지) 이해한다면 올바르게 변하지 않을 것입니다.만약 내가'Foo' 클래스를 정렬해야한다면 클래스 정의 멤버로 사용할 때 명시 적으로 정렬 할 필요없이 모든 _static_ 할당에 대해 적절하게 정렬하는'__declspec (align (16))'을 사용합니다. '바 '. 이것은 동적 인 할당을 위해 아무 것도 바뀌지 않습니다. 그리고 저는 Foo와 Bar 모두에 대해 언급 한 솔루션 중 하나와 그 둘 중 하나를 멤버로 사용하는 다른 클래스를 사용해야 만합니다. –