Share via


/Og (Pengoptimalan Global)

Ditolak. Menyediakan pengoptimalan lokal dan global, alokasi pendaftaran otomatis, dan pengoptimalan perulangan. Sebaiknya Gunakan ( /O1 Minimalkan Ukuran) atau /O2 (Maksimalkan Kecepatan) sebagai gantinya.

Sintaks

/Og

Keterangan

/Og tidak digunakan lagi. Pengoptimalan ini sekarang diaktifkan secara default ketika pengoptimalan diaktifkan. Untuk informasi selengkapnya tentang pengoptimalan, lihat , (Minimalkan Ukuran, Maksimalkan Kecepatan), atau/Ox(Aktifkan Pengoptimalan Kecepatan Terbanyak). /O2/O1

Pengoptimalan berikut tersedia di bawah /Og:

  • Eliminasi subekspresi umum lokal dan global

    Dalam pengoptimalan ini, nilai subekspresi umum dihitung sekali. Dalam contoh berikut, jika nilai b dan c tidak berubah di antara tiga ekspresi, pengkompilasi dapat menetapkan perhitungan b + c ke variabel sementara, dan menggunakan variabel tersebut untuk b + c:

    a = b + c;
    d = b + c;
    e = b + c;
    

    Untuk pengoptimalan subekspresi umum lokal, pengompilasi memeriksa bagian kode pendek untuk subekspresi umum. Untuk pengoptimalan subekspresi umum global, pengompilasi mencari seluruh fungsi untuk subekspresi umum.

  • Alokasi register otomatis

    Pengoptimalan ini memungkinkan pengompilasi untuk menyimpan variabel dan subekspresi yang sering digunakan dalam daftar. Kata register kunci diabaikan secara default, dan menyebabkan diagnostik di bawah /std:c++17 atau yang lebih baru.

  • Pengoptimalan perulangan

    Pengoptimalan ini menghilangkan subekspresi yang invarian dari isi perulangan. Perulangan optimal hanya berisi ekspresi yang nilainya berubah melalui setiap eksekusi perulangan. Dalam contoh berikut, ekspresi x + y tidak berubah dalam isi perulangan:

    i = -100;
    while( i < 0 ) {
        i += x + y;
    }
    

    Setelah pengoptimalan, x + y dihitung sekali daripada setiap kali perulangan dijalankan:

    i = -100;
    t = x + y;
    while( i < 0 ) {
        i += t;
    }
    

    Pengoptimalan perulangan jauh lebih efektif ketika pengkompilasi dapat mengasumsikan tidak ada aliasing, yang Anda tetapkan dengan __restrict, noalias, atau restrict.

    Catatan

    Anda dapat mengaktifkan atau menonaktifkan pengoptimalan global berdasarkan fungsi demi fungsi menggunakan optimize pragma bersama dengan g opsi .

Untuk informasi terkait, lihat /Oi (Hasilkan fungsi intrinsik) dan /Ox (Aktifkan pengoptimalan paling cepat).

Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.

  3. Masukkan opsi pengkompilasi dalam kotak Opsi Tambahan.

Untuk mengatur opsi pengkompilasi ini secara terprogram

Baca juga

Sintaks Baris Perintah Pengkompilasi MSVC