Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Opsi /Os pengkompilasi dan /Ot menentukan apakah akan mendukung ukuran (/Os) atau kecepatan (/Ot) saat mengoptimalkan kode.
Sintaks
/Os
/Ot
Keterangan
/Os (Favor Small Code) meminimalkan ukuran EXEs dan DLL dengan menginstruksikan pengkompilasi untuk mendukung ukuran di atas kecepatan. Pengkompilasi dapat mengurangi banyak konstruksi C dan C++ ke urutan kode mesin yang serupa secara fungsional. Terkadang perbedaan ini menawarkan tradeoff ukuran versus kecepatan. Opsi /Os dan /Ot memungkinkan Anda menentukan preferensi untuk satu di atas yang lain:
/Ot (Mendukung Kode Cepat) memaksimalkan kecepatan EXEs dan DLL dengan menginstruksikan pengkompilasi untuk mendukung kecepatan melebihi ukuran. /Ot adalah default ketika pengoptimalan diaktifkan. Pengkompilasi dapat mengurangi banyak konstruksi C dan C++ ke urutan kode mesin yang serupa secara fungsional. Terkadang, perbedaan ini menawarkan tradeoff ukuran versus kecepatan. Opsi /Ot ini tersirat oleh /O2 opsi (Maksimalkan kecepatan). Opsi ini /O2 menggabungkan beberapa opsi untuk menghasilkan kode yang lebih cepat.
Catatan
Informasi yang dikumpulkan dari pengujian pembuatan profil akan mengambil alih pengoptimalan apa pun yang akan berlaku jika Anda menentukan /Ob, , /Osatau /Ot. Untuk informasi selengkapnya, lihat Pengoptimalan Yang Dipandu Profil.
Contoh khusus x86
Contoh kode berikut menunjukkan perbedaan antara /Os opsi (Mendukung kode kecil) dan /Ot opsi (Mendukung kode cepat):
Catatan
Contoh ini menjelaskan perilaku yang diharapkan saat menggunakan /Os atau /Ot. Namun, perilaku pengkompilasi dari rilis ke rilis dapat mengakibatkan pengoptimalan yang berbeda untuk kode di bawah ini.
/* 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;
}
Seperti yang ditunjukkan dalam fragmen kode mesin di bawah ini, ketika differ.c dikompilasi untuk ukuran (/Os), pengkompilasi mengimplementasikan ekspresi perkalian dalam pernyataan pengembalian secara eksplisit sebagai perkalian untuk menghasilkan urutan kode yang pendek tetapi lebih lambat:
mov eax, DWORD PTR _x$[ebp]
imul eax, 71 ; 00000047H
Secara bergantian, ketika differ.c dikompilasi untuk kecepatan (/Ot), pengkompilasi mengimplementasikan ekspresi perkalian dalam pernyataan pengembalian sebagai serangkaian pergeseran dan LEA instruksi untuk menghasilkan urutan kode yang cepat tetapi lebih lama:
mov eax, DWORD PTR _x$[ebp]
mov ecx, eax
shl eax, 3
lea eax, DWORD PTR [eax+eax*8]
sub eax, ecx
Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio
Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.
Pilih halaman properti Properti>Konfigurasi C/C++>Optimasi.
Ubah properti Ukuran atau Kecepatan Dukungan.
Untuk mengatur opsi pengkompilasi ini secara terprogram
- Lihat FavorSizeOrSpeed.
Lihat juga
Opsi /O (Optimalkan kode)
Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC