cesta123   5년 전

채점번호 : 11277682 (STL을 활용하고 string을 이용해 더하는 방식 : 2488ms)
채점번호 : 11277637 (오직 iostream만 이용하여서 queue와 char str을 이용한 방식 : 4764ms)

iostream만을 이용해야할 일이 있어서 그렇습니다.
cout을 char 한 글자마다 하면 더 느려질 것 같아서 str배열을 선언 후에 while문 끝난 시점에서 다음 문자에 NULL문자 넣어주는 방식으로 하고 str을 뿌려주면 빨라질 거라 생각했거든요. 또한 재귀 방식으로도 출력했는데 비슷한 시간 4800ms 정도 나와서 어디가 느려지는 것인지 알고 싶습니다.. 고수님들 도와주세요.


djm03178   5년 전

포인터를 사용한 링크드 리스트는 그 특성상 매우 느릴 수밖에 없습니다. 메모리를 할당받고 해제하는 것도 오버헤드가 크고, 포인터 변수 자체가 들어갈 공간도 추가로 필요할 뿐 아니라 리스트를 순회할 때 접근하는 메모리도 연속적이지 않아 캐시 미스가 자주 발생하기 때문입니다.

STL의 std::queue는 deque을 기반으로 조금 특이하게 동작하는데, 기본적으로는 배열을 여러 개 둔 방식으로 포인터로 하나씩 할당하는 것보다는 훨씬 빠릅니다.

cesta123   5년 전

아 그렇군요.. 정말 감사합니다.

댓글을 작성하려면 로그인해야 합니다.