C ++ 11에는 예를 들어 C ++ 03이 복사 구성 또는 복사 할당을 수행해야하는 상황에서 코드 성능을 향상시킬 수있는 이동 의미론이 도입되었습니다. 이 기사에서는 C + 11로 컴파일 할 때 다음 코드에서 5 배 속도가 향상된다고보고합니다.
vector<vector<int> > V;
for(int k = 0; k < 100000; ++k) {
vector<int> x(1000);
V.push_back(x);
}
과학 컴퓨팅의 맥락에서 C ++ 11 이동 시맨틱의 영향은 무엇입니까?
나는이 질문에 관심이 있지만 더 구체적으로 부스트 라이브러리를 사용하여 작성된 유한 요소 코드의 이동 의미에 관심이 있습니다. 부스트 버전 1.47.0 ( 부스트 릴리스 노트 는 1.48.0에서 이동 의미론이 소개 되었기 때문에)과 부스트 버전 1.53.0을 사용하여 내 C ++ 03 코드 중 일부를 테스트 했지만 크게 개선되지는 않았습니다. 나는 복사 - 건설 할 필요가없는에서 모든 저축을 추측 boost::numeric::ublas::vector
/ matrix
및 boost::function
시스템 매트릭스를 해결하는 워크로드의 대부분을 구성하기 때문에 눈에 띄는되지 않습니다.
편집 : 실제로 이동 의미가 구현 된 것 같습니다 boost::function
( 버전 1.52.0 릴리스 정보 참조 ). 에 이동 의미에 대한 언급이 없으며 boost::numeric
소스를 확인하여 rvalue 참조가없는 것 같습니다.