Rumah >pembangunan bahagian belakang >C++ >Adakah Bahagian Titik Terapung Benar-Benar Lebih Lambat Daripada Pendaraban dalam CPU Moden?
Implikasi Prestasi Pembahagian Titik Terapung vs. Pendaraban
Telah dinyatakan bahawa pembahagian titik terapung secara pengiraan lebih perlahan daripada pendaraban. Artikel ini menyelidiki pernyataan ini dan mengkaji kesahihannya dalam seni bina PC moden.
Pembahagian dalam operasi titik terapung selalunya mengatasi pendaraban dari segi kerumitan masa. CPU biasanya melaksanakan pendaraban dalam 1-2 kitaran jam, manakala pembahagian memerlukan proses yang lebih berpanjangan.
Untuk menggambarkan jurang prestasi, pertimbangkan coretan kod berikut:
float f1 = 200f / 2; // vs. float f2 = 200f * 0.5;
Dalam banyak kes, f2 akan dikira lebih cepat kerana kecekapan pendaraban ke atas pembahagian.
Ini perbezaan prestasi juga nyata dalam operasi yang lebih kompleks. Sebagai contoh, gelung berikut:
float f1; float f2 = 2; float f3 = 3; for(i = 0; i < 1e8; i++) { f1 = (i * f2 + i / f3) * 0.5; //or divide by 2.0f, respectively }
akan dilaksanakan dengan lebih cekap menggunakan pendaraban dengan 0.5 dan bukannya membahagi dengan 2.0f, kerana pembahagian memerlukan langkah berulang.
Perbezaan prestasi yang ketara berpunca daripada kerumitan seni bina pembahagian. Tidak seperti pendaraban, yang boleh disejajarkan dengan menukarnya kepada beberapa penambahan, pembahagian melibatkan penolakan berulang, operasi yang kurang selari. Untuk mengimbangi, sesetengah unit titik terapung menggunakan anggaran dan pendaraban timbal balik, mengorbankan sedikit ketepatan untuk kecekapan.
Atas ialah kandungan terperinci Adakah Bahagian Titik Terapung Benar-Benar Lebih Lambat Daripada Pendaraban dalam CPU Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!