noru0114   5년 전

안녕하세요. 

코딩중 std::sort()에 관해 신기한 점을 발견해 그 이유에 관해 의견을 듣고 싶어 글을 작성하게 되었습니다.

아래에 첨부한 코드는 2개의 각각 길이가 100000000인 vector를 sort하는 코드입니다.

한쪽은 [60.0 ~ 69.0] 사이의 정수 값을 원소로 갖고 (자료형은 float입니다.)

나머지 한쪽은 정수부분이 0인 float값을 갖습니다.

두 개의 sort는 제 PC환경에서 약 4배의 속도차이를 보였는데요.

둘다 자료형이 float이며 길이가 같은데 왜 이렇게 속도가 차이가 나는지 궁금합니다.

여러가지 실험을 해본 결과 속도차이가 나는 조건은 vector의 원소의 종류가 적을 수록 빠르다는 것이었습니다.

첫번째 벡터는 60, 61, ~ , 69 까지의 10종류 원소를 가지는데 22번째 줄의 %10을 없애 그 종류를 늘리는 경우

속도가 다시 느려졌습니다.

또한 이 현상은 visual studio 2017과 2010 버전의 컴파일러에서는 발생했지만

devC++의 TDM-GCC 4.9.2에서는 두 sort가 비슷한 속도가 나왔습니다.

이러한 현상에 대해 많은 분들의 의견을 받고싶습니다. 

감사합니다.

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