Pertanyaan yang diberi tag «compiler-optimization»

Pengoptimalan kompilator melibatkan adaptasi kompilator untuk mengurangi waktu proses atau ukuran objek atau keduanya. Ini dapat dilakukan dengan menggunakan argumen kompilator (yaitu CFLAGS, LDFLAGS), plugin kompilator (DEHYDRA misalnya) atau modifikasi langsung ke kompilator (seperti memodifikasi kode sumber).

13
Bagaimana cara membuat loop kosong tanpa batas yang tidak akan dioptimalkan?
Standar C11 tampaknya menyiratkan bahwa pernyataan iterasi dengan ekspresi kontrol konstan tidak boleh dioptimalkan. Saya menerima saran saya dari jawaban ini , yang secara khusus mengutip bagian 6.8.5 dari konsep standar: Pernyataan iterasi yang ekspresi pengontrolnya bukan ekspresi konstan ... dapat diasumsikan oleh implementasi untuk diakhiri. Dalam jawaban itu disebutkan …

3
Menggunakan pointer ini menyebabkan deoptimisasi yang aneh di hot loop
Saya baru-baru ini menemukan deoptimisasi yang aneh (atau lebih tepatnya melewatkan peluang pengoptimalan). Pertimbangkan fungsi ini untuk pembongkaran array yang efisien dari bilangan bulat 3-bit menjadi bilangan bulat 8-bit. Ini membongkar 16 int di setiap iterasi loop: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t …

11
Efisiensi pengembalian prematur dalam suatu fungsi
Ini adalah situasi yang sering saya temui sebagai programmer yang tidak berpengalaman dan saya bertanya-tanya terutama untuk proyek ambisius dan cepat yang saya coba optimalkan. Untuk bahasa C-like mayor (C, objC, C ++, Java, C #, dll) dan compiler biasanya, akankah kedua fungsi ini berjalan dengan efisien? Apakah ada perbedaan …

3
Tingkat pengoptimalan dentang
Pada gcc, manual menjelaskan apa -O3, -Os, dll menerjemahkan ke dalam hal argumen optimasi khusus ( -funswitch-loops, -fcompare-elim, dll) Saya mencari info yang sama untuk dentang . Saya telah melihat online dan man clangyang hanya memberikan informasi umum ( -O2mengoptimalkan lebih dari -O1, -Osmengoptimalkan kecepatan,…) dan juga melihat di Stack …


2
Tes dapat dibagi lebih cepat dari% operator?
Saya memperhatikan hal yang aneh di komputer saya. * Tes keterbagian tulisan tangan secara signifikan lebih cepat daripada %operator. Pertimbangkan contoh minimal: * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return 1; …

1
Mengapa inisialisasi agregat GCC dari array mengisi semuanya dengan nol terlebih dahulu, termasuk elemen yang tidak nol?
Mengapa gcc mengisi seluruh array dengan nol alih-alih hanya 96 bilangan bulat yang tersisa? Inisialisasi non-nol semua pada awal array. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to materialize a[] in memory …

2
Java 8: Class.getName () memperlambat rantai penggabungan string
Baru-baru ini saya mengalami masalah tentang penggabungan String. Patokan ini merangkumnya: @OutputTimeUnit(TimeUnit.NANOSECONDS) public class BrokenConcatenationBenchmark { @Benchmark public String slow(Data data) { final Class<? extends Data> clazz = data.clazz; return "class " + clazz.getName(); } @Benchmark public String fast(Data data) { final Class<? extends Data> clazz = data.clazz; final String …

2
Apakah kompiler saya mengabaikan anggota thread_local statis saya yang tidak digunakan?
Saya ingin melakukan pendaftaran utas di kelas saya, jadi saya memutuskan untuk menambahkan tanda centang untuk thread_localfitur ini: #include <iostream> #include <thread> class Foo { public: Foo() { std::cout << "Foo()" << std::endl; } ~Foo() { std::cout << "~Foo()" << std::endl; } }; class Bar { public: Bar() { std::cout …
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.