코드 최적화 관련 tip
- 주의사항 #pragma 또는 __attribute __ 같이 컴파일러에게 직접적으로 옵션을 설장하는 명령어는 컴파일러에 따라서 지원하기도 하고 안하기도 한다. 때문에 자신이 쓰는 컴파일러에서 옵션을 지원하는지 꼭 확인하고 사용하도록 하자 .
#pragma 속도,코드사이즈
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
1 . optimize("O3") : 코드의 크기는 신경쓰지 않고 수행시간에 맞춰서 최적화를 진행
2 . optimize("O2") : 코드크기 , 실행시간 모두 적당한 선에서 실행 (보통 default 값을 사용됨)
3 . optimize("O0") : 최적화 하지 않음
- cf O3 명령어가 항상 O2 명령어보다 빠르지는 않다. 코드를 직접 실행해봐야한다.
#pragma GCC optimize("Os")
코드 크기에 맞춰서 최적화를 해준다. O2에서 실행하는 최적화를 모두 실행하지만 , 코드 사이즈를 늘리는 최적화는 하지 않는다.
#pragma GCC optimize("Ofast")
위의 옵션의 최신 버전이라고 생각한다. O3 옵션을 모두 키면서 , 위의 에서 소개한 최적화의 최적화라고 생각하면된다.
#pragma GCC optimize("unroll-loops")
: loop 문에서 코드크기를 늘리는 대신 속도를 늘린는 기법
-자세한 내용- (http://z3moon.com/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/loop_unrolling)
출처:
https://justicehui.github.io/etc/2019/08/29/Optimization/
https://www.geeksforgeeks.org/speed-up-naive-algorithms-in-competitive-coding-in-c-cpp/
구조체 크기 최적화
#pragma pack(push, 정렬크기)
#pragma pack(pop)
GCC 4.0 미만
__attribute__((aligned(정렬크기), packed))
https://dojang.io/mod/page/view.php?id=432
C 언어 코딩 도장: 51.2 구조체 정렬 크기 조절하기
데이터 전송이나 저장을 할 때 구조체 정렬을 피하려면 어떻게 해야 할까요? 그런데 C 언어에서는 구조체를 정렬하는 표준 방법이 없습니다. 하지만 걱정하지 않아도 됩니다. 각 컴파일러에서
dojang.io
https://sonseungha.tistory.com/522
[gcc] 특정 코드에 최적화 속성 사용하기
[gcc] 최적화 속성 사용하기 gcc를 컴파일러로 사용할 시 -O2, -O3와 같은 최적화 옵션을 자주 사용하게 됩니다. 특별한 경우에 특정 함수나 코드 구간에 대해서 특정 최적화 단계를 적용하고 싶다면
sonseungha.tistory.com
'기타' 카테고리의 다른 글
vscode 유용한 단축키 , extention 및 셋팅 (0) | 2023.02.20 |
---|---|
Lora 망 (0) | 2021.09.23 |
안호화 알고리즘 코드화 사이트 KISA (0) | 2021.09.17 |
워드에 코드 블록 넣기 사이트 (0) | 2021.09.14 |
RS232 정리 (0) | 2021.09.10 |
댓글