· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Gcc Optimization Options

GccOptimizationOptionsÀÔ´Ï´Ù.

GCC Optimization Options


gcc version 3.2.2 ±âÁØ.

gcc version 3.4.6 ±âÁØ.

Option Details

gcc´Â ±âº»ÀûÀ¸·Î ¾Æ¹«·± ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ¸¸µé¾îÁö´Â Äڵ带 ÃÖÀûÈ­(optimization)½ÃÅ°Áö ¾Ê½À´Ï´Ù. ÃÖÀûÈ­¸¦ À§ÇØ, ¿©·¯°¡Áö ¿É¼ÇÀ» Á¦°øÇϴµ¥ (¾Æ·¡ Ç¥ Âü°í), ÀÌµé ¿É¼ÇÀ» ÀÏÀÏÈ÷ ¼±ÅÃÇϱ⠺¸´Ù´Â ÀÌµé ¿É¼ÇÀ» ¼¼Æ®·Î ¹­¾î Á¦°øÇÏ´Â '-O', '-O1', '-O2', '-O3' µîÀ» ÀϹÝÀûÀ¸·Î ¾¹´Ï´Ù. (Âü°í·Î '-O0'´Â ÀüÇô ÃÖÀûÈ­ÇÏÁö ¸»¶ó´Â, default ¿É¼ÇÀÔ´Ï´Ù.)

'-O' ¶Ç´Â '-O1'ÀÇ °æ¿ì, ¸¸µé¾îÁö´Â ¿ÀºêÁ§Æ®, ¶Ç´Â ½ÇÇà ÆÄÀÏÀ» °¡´ÉÇÑ ÀÛ°Ô Çϸ鼭, ÄÄÆÄÀÏ ½Ã°£ÀÌ ¿À·¡°É¸®Áö ¾Ê´Â ¹üÀ§¿¡¼­ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù.

'-O2'ÀÇ °æ¿ì, ¸¸µé¾îÁö´Â Äڵ尡 °¡´ÉÇÑ ºü¸£°Ô ¼öÇàµÇµµ·Ï ÇÏÁö¸¸, ÄÚµåÀÇ Å©±â°¡ ³Ê¹« Ä¿ÁöÁö ¾Êµµ·Ï ÇÏ´Â ¹üÀ§¿¡¼­ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù.

'-Os'ÀÇ °æ¿ì, '-O2'¿¡¼­ Á¦°øÇÏ´Â ¸ðµç ÃÖÀûÈ­ ±â´ÉÀ» ´Ù ¾²Áö¸¸, ÄÚµåÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°´Â ÃÖÀûÈ­ ±â´ÉÀº »©°í ³ª¼­ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù.

'-O3'ÀÇ °æ¿ì, ÄÚµåÀÇ Å©±â´Â ÀüÇô ½Å°æ ¾²Áö ¾Ê°í, ¿ÀÁ÷ ºü¸¥ Äڵ带 ¸¸µé¾î ³»±â À§ÇØ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù. ±×·¯³ª, ²À »ý°¢ÇØ µÎ¾î¾ß ÇÒ Á¡Àº, '-O3'·Î ¸¸µé¾î³½ Äڵ尡 ¹Ýµå½Ã '-O2'¸¦ ½á¼­ ¸¸µé¾î³½ Äڵ庸´Ù ºü¸£´Ù´Â º¸ÀåÀº ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇϸé, º¸Åë CPU°¡ ±â°è¾î¸¦ ¼öÇàÇÒ ¶§, ÀÏÁ¤ÇÑ ºÐ·®¸¸Å­ ¸ÕÀú CPU ³»ºÎÀÇ cache(ij½Ã)¿¡ ºÒ·¯¿Í¼­ ¼öÇàÇϴµ¥, '-O3'¸¦ ½á¼­ ¸¸µç ÄÚµå´Â ´ë°³ Å©±â°¡ Ä¿¼­, ÀÌ cache¿¡ µé¾î°¥ ¼ö ÀÖ´Â ¸í·ÉÀÇ ¾çÀÌ »ó´ëÀûÀ¸·Î Àû¾îÁö±â ¶§¹®¿¡, ¿ÀÈ÷·Á ´À·ÁÁú °¡´É¼ºµµ ÀÖ½À´Ï´Ù.

Included in Level
Optimization -O1 -O2 -Os -O3
defer-pop O O O O
thread-jumps O O O O
branch-probabilities O O O O
cprop-registers O O O O
guess-branch-probability O O O O
omit-frame-pointer O O O O
merge-constants O O O O
loop-optimize O O O O
if-conversion O O O O
if-conversion2 O O O O
align-loops X O X O
align-jumps X O X O
align-labels X O X O
align-functions X O X O
crossjumping X O O O
prefetch-loop-array ? ? X ?
optimize-sibling-calls X O O O
cse-follow-jumps X O O O
cse-skip-blocks X O O O
gcse X O O O
gcse-lm X O O O
gcse-sm X O O O
gcse-las X O O O
expensive-optimizations X O O O
strength-reduce X O O O
rerun-cse-after-loop X O O O
rerun-loop-opt X O O O
caller-saves X O O O
force-mem X O O O
peephole2 X O O O
regmove X O O O
strict-aliasing X O O O
delete-null-pointer-checks X O O O
reorder-blocks X O O O
reorder-functions X O O O
unit-at-a-time X O ? O
schedule-insns X O O O
schedule-insns2 X X X O
schedule-interblock X O ? O
sched-spec X O ? O
inline-functions X X X O
rename-registers X X X O
web X X X O
unswitch-loops X X ? O

'-On' (n=1, 2, 3) ²ÃÀÇ ¿É¼Ç°ú ´õºÒ¾î À§ Ç¥ÀÇ ¿ÞÆí ¿É¼ÇÀ» ¼¯¾î ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, À§ Ç¥¿¡ µû¸£¸é '-O2'¸¦ ¾µ °æ¿ì, 'inline-function' ÃÖÀûÈ­´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ '-O2'¿¡ ÇØ´çÇÏ´Â ¸ðµç ÃÖÀûÈ­ ±â¹ýµé°ú '-inline-functions'À» ÇÔ²² ¾µ ¼ö ÀÖ½À´Ï´Ù:
$ gcc -O2 -finline-funtions hello.c

¹°·Ð, ƯÁ¤ ¿É¼Ç ±â´ÉÀ» »©´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ¾Æ·¡´Â '-O3'°¡ Á¦°øÇÏ´Â ¸ðµç ÃÖÀûÈ­ ±â¹ýÀ» Àû¿ëÇÏÁö¸¸ 'inline-functions' ÃÖÀûÈ­¸¸ »©°í ÄÄÆÄÀÏÇÏ´Â °ÍÀ» º¸¿©ÁÝ´Ï´Ù.

$ gcc -O3 -fno-inline-functions hello.c

Áï, À§ Ç¥ÀÇ ¿ÞÆí ºÎºÐÀÇ ¿É¼ÇÀ» Àû¿ë½ÃÅ°·Á¸é(on) "-f¿É¼ÇÀ̸§"À» ¾²°í, ²ô·Á¸é(off), "-fno-¿É¼ÇÀ̸§" ²ÃÀ» ¾¹´Ï´Ù.



Target CPU Types -march= Type
i386 DX/SX/CX/EX/SL i386
i486 DX/SX/DX2/SL/SX2/DX4 i486
487 i486
Pentium pentium
Pentium MMX pentium-mmx
Pentium Pro i686, pentiumpro
Pentium II pentium2
Celeron pentium2
Pentium III pentium3
Pentium IIIM pentium3m
Pentium M pentium-m
Pentium 4 pentium4
Pemtium 4M pentium4m
Pentium 4 Prescottprescott
Pentium 4 Xeon, Nocona nocona
Via C3 c3
Winchip 2 winchip2
Winchip C6-2 winchip-c6
AMD K5 i586
AMD K6 k6
AMD K6 II k6-2
AMD K6 III k6-3
AMD Athlon athlon
AMD Athlon 4 athlon-4
AMD Athlon XP athlon-xp
AMD Athlon MP athlon-mp
AMD Duron athlon
AMD Tbird athlon-tbird
AMD K8 k8
AMD Opteron opteron
AMD Athlon 64 athlon64
AMD Athlon FX athlon-fx
IDT Winchip C6 winchip-c6
IDT Winchip2 winchip2
Via C3 c3
Via C3-2 c3-2

¾Æ·¡ PDF´Â °£´ÜÇÑ XML tree¸¦ memory¿¡ buildÇÏ´Â ÇÁ·Î±×·¥À» ¿©·¯ °¡Áö ÃÖÀûÈ­ ¿É¼ÇÀ» ½á¼­ ÄÄÆÄÀÏÇÑ ÈÄ, ½ÇÇà ½Ã°£À» Àç º» °ÍÀÔ´Ï´Ù.



References

ÀÌ ±ÛÀÇ ´ëºÎºÐÀº [http]Linux JournalÀÇ 2005³â 3¿ùÆÇ¿¡ ³ª¿Â, M. Tim Jones¾¾°¡ ¾´ "[http]Optimization in GCC"¸¦ Åä´ë·Î ¸¸µç °ÍÀÔ´Ï´Ù. ¿ø¹®À» º¸½Ã¸é ´õ ÁÁÀ» °Í °°½À´Ï´Ù.

GCC Info ManualÀ» º¸½Ã¸é ÃÖ½ÅÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â [http]GCC Online DocumentationÀ» Âü°íÇϱ⠹ٶø´Ï´Ù.


[http]Strength Reduction for Loop-Invariant Types by Phung Hua Nguyen and Jingling Xue
(°¡ÀÔÇϽðí loginÇÏ½Ã¸é º¼ ¼ö ÀÖ½À´Ï´Ù.)

[http]Global Common Subexpression Elimination by John Cocke


[http]KLDP Codefest 2005-02-18¿¡¼­ ½èÀ½ -- [http]½Å¼º±¹ 2006-08-28 GCC 3.4.6 ³»¿ë Ãß°¡ -- [http]½Å¼º±¹


ID
Password
Join
Don't be overly suspicious where it's not warranted.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-08-29 08:31:05
Processing time 0.0089 sec