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).


12
Mengapa GCC tidak mengoptimalkan a * a * a * a * a * a to (a * a * a) * (a * a * a)?
Saya melakukan beberapa optimasi numerik pada aplikasi ilmiah. Satu hal yang saya perhatikan adalah bahwa GCC akan mengoptimalkan panggilan pow(a,2)dengan mengkompilasinya a*a, tetapi panggilan pow(a,6)tersebut tidak dioptimalkan dan benar-benar akan memanggil fungsi perpustakaan pow, yang sangat memperlambat kinerja. (Sebaliknya, Intel C ++ Compiler , dapat dieksekusi icc, akan menghilangkan panggilan …

10
Mengganti penghitung loop 32-bit dengan 64-bit memperkenalkan penyimpangan kinerja yang gila dengan _mm_popcnt_u64 pada CPU Intel
Saya mencari cara tercepat untuk popcountarray data yang besar. Saya mengalami efek yang sangat aneh : Mengubah variabel loop dari unsigneduntuk uint64_tmembuat kinerja turun 50% pada PC saya. Tolok Ukur #include <iostream> #include <chrono> #include <x86intrin.h> int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { …


6
Mengapa GCC menghasilkan kode 15-20% lebih cepat jika saya mengoptimalkan ukuran bukan kecepatan?
Saya pertama kali memperhatikan pada tahun 2009 bahwa GCC (setidaknya pada proyek saya dan pada mesin saya) memiliki kecenderungan untuk menghasilkan kode yang lebih cepat jika saya mengoptimalkan untuk ukuran ( -Os) daripada kecepatan ( -O2atau -O3), dan saya telah bertanya-tanya sejak mengapa. Saya telah berhasil membuat kode (agak konyol) …

1
Mengapa kompiler Rust tidak mengoptimalkan kode dengan asumsi bahwa dua referensi yang bisa diubah tidak bisa alias?
Sejauh yang saya tahu, referensi / pointer aliasing dapat menghambat kemampuan kompiler untuk menghasilkan kode yang dioptimalkan, karena mereka harus memastikan biner yang dihasilkan berperilaku dengan benar dalam kasus di mana dua referensi / pointer memang alias. Misalnya, dalam kode C berikut, void adds(int *a, int *b) { *a += …

12
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] successfully opened CUDA library libcublas.so.8.0 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so.5 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcufft.so.8.0 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA …

2
Apa itu operasi&&& di C
#include <stdio.h> volatile int i; int main() { int c; for (i = 0; i < 3; i++) { c = i &&& i; printf("%d\n", c); } return 0; } Output dari program di atas dikompilasi menggunakan gccadalah 0 1 1 Dengan opsi -Wallatau -Waddress, gccmengeluarkan peringatan: warning: the address …


4
Bisakah saya memberi petunjuk pengoptimal dengan memberikan kisaran integer?
Saya menggunakan inttipe untuk menyimpan nilai. Dengan semantik program, nilainya selalu bervariasi dalam kisaran yang sangat kecil (0 - 36), dan int(bukan a char) digunakan hanya karena efisiensi CPU. Sepertinya banyak optimasi aritmatika khusus dapat dilakukan pada sejumlah kecil bilangan bulat. Banyak pemanggilan fungsi pada bilangan bulat itu mungkin dioptimalkan …

2
Mengapa lambdas dioptimalkan lebih baik oleh kompiler daripada fungsi biasa?
Dalam bukunya The C++ Standard Library (Second Edition)Nicolai Josuttis menyatakan bahwa lambdas dapat lebih dioptimalkan oleh kompiler daripada fungsi biasa. Selain itu, kompiler C ++ mengoptimalkan lambdas lebih baik daripada mereka melakukan fungsi biasa. (Halaman 213) Mengapa demikian? Saya pikir ketika datang ke inlining seharusnya tidak ada perbedaan lagi. Satu-satunya …


2
Batas tipe Nat dalam Bentuk
Dalam tak berbentuk, tipe Nat mewakili cara untuk menyandikan bilangan asli pada tingkat tipe. Ini digunakan misalnya untuk daftar ukuran tetap. Anda bahkan dapat melakukan perhitungan pada tingkat jenis, misalnya menambahkan daftarN elemen ke daftar Kelemen dan mendapatkan kembali daftar yang diketahui pada waktu kompilasi untuk memiliki N+Kelemen. Apakah representasi …



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.