Mengapakah `std::list::sort()` Bertukar kepada Isih Gabungan Atas Bawah dalam Visual Studio 2015?

Linda Hamilton
Lepaskan: 2024-11-01 17:47:02
asal
735 orang telah melayarinya

 Why Did `std::list::sort()` Switch to a Top-Down Merge Sort in Visual Studio 2015?

Mengapa Tiba-tiba Beralih ke Strategi Atas Bawah dalam std::list<>::sort()?

Dalam Visual Studio 2015 (VS2015), Microsoft menukar strategi pengisihan std::list<>::sort() daripada Isih Gabungan bawah ke atas tradisional kepada pendekatan atas ke bawah. Perubahan ini menghapuskan penggunaan tatasusunan dalaman senarai dan menggunakan iterator untuk menjejaki sempadan larian yang diisih dalam senarai asal.

Sebab Perubahan

Stephan T. Lavavej , pembangun pendekatan atas ke bawah, menyatakan keperluan untuk mengelakkan peruntukan memori dan pembinaan pengagih bukan lalai. VS2015 memperkenalkan pengagih yang tidak lagi boleh dibina secara lalai dan stateful, yang menimbulkan isu apabila menggunakan pendekatan bawah ke atas sebelumnya.

Pelaksanaan Pendekatan Atas-Bawah

Atas -pendekatan bawah menggunakan algoritma rekursif yang membahagikan senarai secara rekursif kepada separuh sehingga ia mencapai kes asas di mana senarai kosong atau mengandungi satu elemen. Fungsi _Isih membahagikan senarai kepada tiga segmen: larian kiri, larian kanan dan lelaran akhir. Logik gabungan dilakukan menggunakan std::list::splice untuk mengalihkan nod dalam senarai asal, mengekalkan keselamatan pengecualian.

Pertimbangan Prestasi

Sementara atas ke bawah pendekatan menangani kebimbangan peruntukan memori, ia datang dengan penalti prestasi berbanding Isih Gabungan bawah ke atas asal. Untuk senarai besar dengan nod berselerak, pendekatan atas ke bawah mengalami kesilapan cache yang meningkat, mengakibatkan masa pelaksanaan yang lebih perlahan. Dalam kes sedemikian, mungkin lebih cepat untuk mengalihkan senarai ke tatasusunan atau vektor, mengisihnya dan mencipta senarai baharu daripada tatasusunan atau vektor yang diisih.

Atas ialah kandungan terperinci Mengapakah `std::list::sort()` Bertukar kepada Isih Gabungan Atas Bawah dalam Visual Studio 2015?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!