스택오버플로우에서는 C++11에서는 이미 효율적인? 방식이라고 설명하는데 음..암만생각해도 모르겠네..
아니 vector<shared_ptr< >> 이게 왜안되는지 제대로설명좀
인생필패(kim00425)
2016-12-14 22:36
추천 0
댓글 10
다른 게시글
-
ㅋㅋ 시험공부하기 싫어서 졸라 잤는데 [1]씨알메리(crmerry) | 16.12.14추천 0
-
진짜 급해서 그러는데 c언어 가르쳐주세요 ㅠㅠ [2]익명(168.126) | 16.12.14추천 0
-
언젠가는 TDD를 배우자 [9]츄럴(112.185) | 16.12.14추천 0
-
이거 출력했을때 조건문 기준으로 자꾸 개행되는데 [9]익명(39.117) | 16.12.14추천 0
-
보안에 올인하면... [1]codesafer(codesafer) | 16.12.14추천 1
-
그래 결심했다. [4]kaliblog(goldcomputer) | 16.12.14추천 3
-
솔직히 자바 재밌잖아? 쉽고 확장성 좋고 편하잖아? 짱이잖아? [5]ㄹ(119.64) | 16.12.14추천 0
-
프갤 흥하는거 혹시 카연갤 컴공 만화 때문인걸까 [6]츄럴(112.185) | 16.12.14추천 0
-
이명 들리는 사람 있냐? [1]ㅁㄴㅇㄹ(175.203) | 16.12.14추천 0
-
내가 잠든사이 프갤 왜이럼? [4]인생필패(kim00425) | 16.12.14추천 0
vector 의 길이의 범위가 예상 가능하거나 일정하면 상관 없는데 계속 바뀌고 재할당을 반복할 가능성이 있는 벡터일 경우, 재할당 과정에서 shared_ptr 이 생성되고 소멸되는게 반복되면서 엄청난 오버헤드 발생
올해 NDC 테라 서버 개발자가 했던 말임
ㄴ 예상가능한 범위라면 딱히 상관없다는 거고 shared_ptr이 소멸되면 메모리가 해제되었다가 다시 생성되는데 오버헤드가 왜 발생하는거임???
C++이 또...
이럴 땐 괜찮지만 저럴 땐 쓰면 좆돼 ㅋㅋ
쓸지 말지는 니가 결정하셈 ㅋㅋㅋ
shared_ptr 은 소유권의 공유 때문에 레퍼런스를 계속 모니터링하는데, 러페런스가 늘어나면 카운트가 증가하고 줄어들면 카운트가 감소함. 문제는 이 카운트 잉크러먼트와 디크러먼트가 꽤 무거운 작업임. 안 그래도 벡터를 재할당하는 것도 피곤한데 거기다가 모든 데이터들이 잉크러먼트와 디크러먼트를 하면 굉장히 무겁다는거임
벡터가 재할당을 하지 못하도록 .reserve() 를 해주면 상관 없는데, reserver() 로 용량을 미리 가늠해서 할당해줄 수 없는 상황에서는 저렇게 된다는거
ㄴ 그럼 shared_ptr자체가 무겁다는거아님? 그럼 더 가벼운거 없나?
저거 벡터 이사할때도 이동연산일텐데