적어도 VS에서는 함수 정의를 무리해 헤더에 쓰지 않게 할 필요는 없을 것 같다
처음에
함수 정의를 cpp/cc 파일에 쓰는지, h/hpp에 쓰는지 가끔 고민하는 일이 있다고 생각합니다만, 컴파일 속도적으로는 어떻습니까, 라고 하는 것으로 검증했습니다.
조사 대상
정의를 헤더에 쓰고 있던 것
https://魏tub. 작은 m / YSR 티켓 / 칸코 ぇ 심과 r_회 / 코 미 t / 7 아 37 아 02343c224018c3962 아 04 있음 d0c77894C4
정의를 cpp 파일로 옮긴 것
https://魏tub. 작은 m / YSR 티켓 / 칸코 ぇ 심과 r_회 / 코 미 t / 아 14223991c37 A1 그림
사용하는 컴파일러
정의를 헤더에 쓰고 있던 것
https://魏tub. 작은 m / YSR 티켓 / 칸코 ぇ 심과 r_회 / 코 미 t / 7 아 37 아 02343c224018c3962 아 04 있음 d0c77894C4
정의를 cpp 파일로 옮긴 것
https://魏tub. 작은 m / YSR 티켓 / 칸코 ぇ 심과 r_회 / 코 미 t / 아 14223991c37 A1 그림
사용하는 컴파일러
이 두 컴파일러 ✕ x86/x64 ✕ Debug(-O0)/Release(-O2)
의 총 8가지 구성을 만들어 VS의 배치 빌드 기능으로 모두 재빌드한 시간을 측정
측정 환경
측정 방법
아마레코 TV을 사용하여 컴파일 할 때 로그 창을 녹화합니다. 녹화 코덱은 UtVideo Codec Suite 15.3.0 YUV420 BT.709 VCM
이것을 AviUtl에서 캡처 컷 편집, AviUtl에 표시되는 총 시간과 총 frame수를 기록한다. AviUtl의 읽기 플러그인에는 L-SMASH Works File Reader r785를 사용했습니다.
결과
헤더에 정의를 쓴 것 3:58.59[7158frame]
cpp에 정의를 쓴 것 3.57.80[7134frame]
유의한 차이는 나오지 않았다 (헤더에 쓰면 +0.3% 컴파일 시간 증가했다)
결론
컴파일러는 충분히 우수하기 때문에 어느 쪽이라도 좋지 않을까.
template가 얽힌 함수를 공개하면(자) 어차피 헤더에 쓸 밖에 없기 때문에 , 헤더에 정의를 쓰는 것에의 죄악감을 만약 가지고 있는 사람이 있으면 조금은 줄었을까?
다른 컴파일러에서도 (gcc라든지 gcc라든지 gcc라든지) 아마 같은 것은 아닐까.
Reference
이 문제에 관하여(적어도 VS에서는 함수 정의를 무리해 헤더에 쓰지 않게 할 필요는 없을 것 같다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yumetodo/items/c082a3af36eebf3dfb20
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아마레코 TV을 사용하여 컴파일 할 때 로그 창을 녹화합니다. 녹화 코덱은 UtVideo Codec Suite 15.3.0 YUV420 BT.709 VCM
이것을 AviUtl에서 캡처 컷 편집, AviUtl에 표시되는 총 시간과 총 frame수를 기록한다. AviUtl의 읽기 플러그인에는 L-SMASH Works File Reader r785를 사용했습니다.
결과
헤더에 정의를 쓴 것 3:58.59[7158frame]
cpp에 정의를 쓴 것 3.57.80[7134frame]
유의한 차이는 나오지 않았다 (헤더에 쓰면 +0.3% 컴파일 시간 증가했다)
결론
컴파일러는 충분히 우수하기 때문에 어느 쪽이라도 좋지 않을까.
template가 얽힌 함수를 공개하면(자) 어차피 헤더에 쓸 밖에 없기 때문에 , 헤더에 정의를 쓰는 것에의 죄악감을 만약 가지고 있는 사람이 있으면 조금은 줄었을까?
다른 컴파일러에서도 (gcc라든지 gcc라든지 gcc라든지) 아마 같은 것은 아닐까.
Reference
이 문제에 관하여(적어도 VS에서는 함수 정의를 무리해 헤더에 쓰지 않게 할 필요는 없을 것 같다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yumetodo/items/c082a3af36eebf3dfb20
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
컴파일러는 충분히 우수하기 때문에 어느 쪽이라도 좋지 않을까.
template가 얽힌 함수를 공개하면(자) 어차피 헤더에 쓸 밖에 없기 때문에 , 헤더에 정의를 쓰는 것에의 죄악감을 만약 가지고 있는 사람이 있으면 조금은 줄었을까?
다른 컴파일러에서도 (gcc라든지 gcc라든지 gcc라든지) 아마 같은 것은 아닐까.
Reference
이 문제에 관하여(적어도 VS에서는 함수 정의를 무리해 헤더에 쓰지 않게 할 필요는 없을 것 같다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yumetodo/items/c082a3af36eebf3dfb20텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)