Pertanyaan yang ditandai 'optimisasi kompiler'

Optimalisasi kompiler melibatkan mengadaptasi kompiler untuk mengurangi waktu eksekusi atau ukuran suatu objek, atau keduanya. Ini dapat dilakukan dengan menggunakan argumen kompiler (misalnya, CFLAGS, LDFLAGS), plugins kompiler (misalnya, DEHYDRA), atau perubahan >
10
balasan

Mengapa dalam siklus yang terpisah suplemen stigma jauh lebih cepat daripada dalam siklus gabungan?

Misalkan titik a1, b1, c1, dan d1 untuk menumpuk memori, dan kode numerik saya memiliki loop utama berikut. const int n = 100000; untuk (int j = 0; j <n; j ++) {a1 [j] + = b1 [j]; c1 [j] + = d1 [j]; } Siklus ini dilakukan 10.000 kali ...
ditetapkan pada 17 Desember '11 jam 23:40
12
balasan

Mengapa GCC tidak mengoptimalkan a * a * a * a * a * a ke (a * a * a) * (a * a * a)?

Saya melakukan beberapa optimasi numerik dalam aplikasi ilmiah. Saya perhatikan bahwa GCC mengoptimalkan panggilan untuk pow (a, 2), mengkompilasinya menjadi * a, tetapi panggilan untuk pow (a, 6) tidak dioptimalkan dan benar-benar akan memanggil pow fungsi perpustakaan, yang secara signifikan memperlambat produksi ...
diatur pada 21 Juni '11 pada 21:49
10
balasan

Mengganti penghitung loop 32-bit dengan nilai 64-bit menyebabkan penyimpangan kinerja yang gila

Saya sedang mencari cara tercepat untuk popcount array data besar. Saya dihadapkan dengan efek yang sangat aneh: mengubah variabel loop dari unsigned ke uint64_t menghasilkan pengurangan 50% dalam kinerja pada PC saya. Benchmark #include ...
atur 01 Agustus. '14 pukul 13:33
9
balasan

Beta cepat: array penyortiran

Saya menerapkan algoritma dalam Swift Beta dan memperhatikan bahwa kinerjanya sangat buruk. Mengaduk-aduk lebih dalam, saya menyadari bahwa salah satu hambatan adalah sesuatu yang sederhana seperti menyortir array. Bagian yang sesuai ada di sini: misalkan n = 1000000 var ...
diatur 08 Juni '14 di 2:53
3
balasan

Mengapa kami menggunakan kata kunci yang tidak stabil di C ++?

Kemungkinan rangkap: C ++: kapan kata kunci yang mudah menguap pernah membantu Anda? Saya belum pernah menggunakannya, tetapi saya bertanya-tanya mengapa orang menggunakannya? Apa yang dia lakukan Saya sedang mencari forum, saya hanya menemukannya di C # atau di Jawa.
ditetapkan pada 14 Desember '10 jam 12:14
2
balasan

Apa yang dimaksud dengan operasi di C

#include <stdio.h> volatile int i; int main () {int c; untuk (i = 0; i <3; i ++) {c = i i; printf ("% d \ n", c); } kembalikan 0; } Output dari program di atas, dikompilasi menggunakan ...
ditetapkan pada 19 Desember '12 pada jam 9:48
3
balasan

Mengapa GCC menghasilkan bangunan yang sangat berbeda untuk kode C yang hampir sama?

Saat menulis fungsi ftol yang dioptimalkan, saya menemukan perilaku yang sangat aneh di GCC 4.6.1. Pertama-tama saya tunjukkan kode (untuk kejelasan, saya perhatikan perbedaannya): fast_trunc_one, C: int fast_trunc_one (int i) {int mantissa, eksponen, tanda, r; ...
ditetapkan pada 20 April '12 jam 19:59
10
balasan

Bagaimana cara mengkompilasi Tensorflow dengan instruksi SSE4.2 dan AVX?

Ini adalah pesan yang diterima dari menjalankan skrip untuk memeriksa apakah Tensorflow berfungsi: I tensorflow / stream_executor / dso_loader.cc: 125] berhasil membuka perpustakaan CUDA libcublas.so.8.0 secara lokal saya tensorflow / stream_executor / dso_loader.cc: 125] successf .. .
ditetapkan pada 23 Desember '16 jam 2:21
2
balasan

Batas tipe Nat di Shapeless

Dalam bentuk, tipe Nat adalah cara untuk menyandikan bi>
diatur pada 23 Januari '14 jam 2:15
5
balasan

Mengapa pengoptimal yang ditingkatkan GCC 6 mematahkan kode praktis C ++?

GCC 6 memiliki fungsi pengoptimal baru: diasumsikan bahwa ini selalu bukan nol dan dioptimalkan berdasarkan ini. Penyebaran rentang nilai sekarang mengasumsikan bahwa pointer fungsi anggota C ++ ini bukan nol. Ini menghi>
ditetapkan pada 27 April '16 jam 5:45 sore
2
balasan

Mengapa lambdas lebih baik dioptimalkan oleh kompiler daripada fungsi sederhana?

Dalam bukunya The C ++ Standard Library (Edisi Kedua), Nikolay Josuttis berpendapat bahwa lambdas lebih dioptimalkan oleh kompiler daripada fungsi sederhana. Selain itu, kompiler C ++ mengoptimalkan lambdas lebih baik daripada mereka melakukan fungsi normal. (Negara ...
set 05 Des '12 jam 14:38
5
balasan

Bagaimana cara melihat flag -march = asli yang akan diaktifkan?

Saya mengkompilasi aplikasi C ++ saya menggunakan GCC 4.3. Alih-alih memilih secara manual flag optimasi, saya menggunakan -march = asli, yang secara teoritis harus menambahkan semua flag optimasi yang berlaku untuk perangkat keras yang saya kompilasi ...
atur 29 Maret '11 pada jam 12:14
3
balasan

Menggunakan pointer ini menyebabkan deoptimisasi aneh di siklus panas.

Baru-baru ini, saya menemukan de-optimisasi aneh (atau lebih tepatnya, peluang optimasi yang terlewatkan). Pertimbangkan fungsi ini untuk secara efektif mendekompresi array bi>
atur 10 Oktober. '14 pukul 11:38
11
balasan

Efektivitas awal kembali berfungsi

Ini adalah situasi yang sering saya lihat sebagai programmer yang tidak berpengalaman, dan saya tertarik, khususnya, untuk proyek yang ambisius dan cepat yang saya coba optimalkan. Untuk bahasa seperti-C utama (C, objC, C ++, Java, C #, dll.) Dan kompilasi mereka yang biasa ...
atur 25 Oktober. '11 jam 7:26
6
balasan

Mengapa kompiler tidak dapat (atau tidak) mengoptimalkan siklus penambahan yang dapat diprediksi ke multiplikasi?

Ini adalah pertanyaan yang muncul di benak saya ketika membaca jawaban brilian Mysticial atas pertanyaan itu: mengapa lebih cepat memproses array yang diurutkan dari pada array yang tidak disortir? Konteks untuk jenis yang terlibat: const unsigned arraySize = 32768; data int [array ...
diatur pada 30 Juni '12 pada pukul 20:48