/Os
, /Ot
(Küçük Kodu Tercih Edin, Hızlı Kodu Tercih Edin)
/Os
ve /Ot
derleyici seçenekleri, kodu iyileştirirken boyut (/Os
) veya hız (/Ot
) tercih edilip edilmeyeceğini belirtir.
Sözdizimi
/Os
/Ot
Açıklamalar
/Os
(Favor Small Code), derleyiciye boyuta hıza göre destek verme talimatı vererek EXE'lerin ve DLL'lerin boyutunu en aza indirir. Derleyici, birçok C ve C++ yapısını işlevsel olarak benzer makine kodu dizilerine düşürebilir. Bazen bu farklılıklar boyut ve hız arasında denge sağlar. /Os
ve /Ot
seçenekleri, biri için diğerinin tercihini belirtmenize olanak sağlar:
/Ot
(Hızlı Kod Tercihi) derleyiciye boyuta göre hızı tercih etmelerini sağlayarak EXE'lerin ve DLL'lerin hızını en üst düzeye çıkarır. /Ot
, iyileştirmeler etkinleştirildiğinde varsayılan değerdir. Derleyici, birçok C ve C++ yapısını işlevsel olarak benzer makine kodu dizilerine düşürebilir. Bazen, bu farklılıklar boyut ve hız arasında dengeler sunar. Bu /Ot
seçenek (Hızı en üst düzeye çıkar) seçeneğiyle /O2
örtülür. seçeneği /O2
, daha hızlı kod üretmek için çeşitli seçenekleri birleştirir.
Not
Profil oluşturma test çalıştırmalarından toplanan bilgiler, , /Os
veya /Ot
belirtirseniz /Ob
geçerli olabilecek tüm iyileştirmeleri geçersiz kılar. Daha fazla bilgi için bkz . Profil Destekli İyileştirmeler.
x86'ya özgü örnek
Aşağıdaki örnek kod, (Küçük kodu tercih edin) seçeneğiyle /Ot
(Hızlı kodu tercih edin) seçeneği arasındaki /Os
farkı gösterir:
Not
Bu örnekte veya /Ot
kullanılırken /Os
beklenen davranış açıklanmaktadır. Ancak, yayından sürüme derleyici davranışı aşağıdaki kod için farklı iyileştirmelere neden olabilir.
/* differ.c
This program implements a multiplication operator
Compile with /Os to implement multiply explicitly as multiply.
Compile with /Ot to implement as a series of shift and LEA instructions.
*/
int differ(int x)
{
return x * 71;
}
Aşağıdaki makine kodunun parçasında gösterildiği gibi, boyut ()/Os
için derlendiğinde differ.c
derleyici, kısa ama daha yavaş bir kod dizisi oluşturmak için dönüş deyimindeki çarpma ifadesini açıkça çarpma olarak uygular:
mov eax, DWORD PTR _x$[ebp]
imul eax, 71 ; 00000047H
Alternatif olarak, hız ()/Ot
için derlendiğindediffer.c
, derleyici dönüş deyimindeki çarpma ifadesini bir dizi vardiya olarak ve LEA
hızlı ama daha uzun bir kod dizisi oluşturmak için yönergeler olarak uygular:
mov eax, DWORD PTR _x$[ebp]
mov ecx, eax
shl eax, 3
lea eax, DWORD PTR [eax+eax*8]
sub eax, ecx
Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>C/C++>İyileştirme özellik sayfasını seçin.
Favor Size veya Speed özelliğini değiştirin.
Bu derleyici seçeneğini program üzerinden ayarlamak için
- Bkz. FavorSizeOrSpeed.
Ayrıca bkz.
/O seçenekleri (Kodu iyileştirme)
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi