본문 바로가기
기타

최적화 관련 사이트

by fromnothing1 2021. 10. 8.

 코드 최적화 관련  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

댓글