/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, , /Osveya /Otbelirtirseniz /Obgeç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 /Otkullanı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

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>C/C++>İyileştirme özellik sayfasını seçin.

  3. Favor Size veya Speed özelliğini değiştirin.

Bu derleyici seçeneğini program üzerinden ayarlamak için

Ayrıca bkz.

/O seçenekleri (Kodu iyileştirme)
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi