Projek Gentoo memperkenalkan sistem pengurusan pakej Portage 3.0

Distabilkan keluaran sistem pengurusan pakej Portage 3.0, digunakan dalam pengedaran Gentoo Linux. Benang yang dibentangkan meringkaskan kerja jangka panjang pada peralihan kepada Python 3 dan penamatan sokongan untuk Python 2.7.

Selain penghujung sokongan untuk Python 2.7, satu lagi perubahan penting ialah kemasukan pengoptimuman, yang memungkinkan untuk mempercepatkan pengiraan yang berkaitan dengan menentukan kebergantungan sebanyak 50-60%. Menariknya, sesetengah pembangun mencadangkan menulis semula kod resolusi pergantungan dalam C/C++ atau Go untuk mempercepatkan operasinya, tetapi mereka berjaya menyelesaikan masalah sedia ada dengan sedikit usaha.

Pemprofilan kod sedia ada menunjukkan bahawa kebanyakan masa pengiraan dibelanjakan untuk memanggil fungsi use_reduce dan catpkgsplit dengan set argumen berulang (contohnya, fungsi catpkgsplit dipanggil 1 hingga 5 juta kali). Untuk mempercepatkan perkara, caching hasil fungsi ini menggunakan kamus telah digunakan. Pilihan terbaik untuk storan cache ialah fungsi lru_cache terbina dalam, tetapi ia hanya tersedia dalam keluaran Python bermula dengan 3.2. Untuk keserasian dengan versi terdahulu, stub telah ditambahkan untuk menggantikan lru_cache, tetapi keputusan untuk menghentikan sokongan untuk Python 2.7 dalam Portage 3.0 sangat memudahkan tugas dan memungkinkan untuk dilakukan tanpa lapisan ini.

Menggunakan cache mengurangkan masa pelaksanaan operasi "emerge -uDvpU β€”with-bdeps=y @world" pada komputer riba ThinkPad X220 daripada 5 minit 20 saat kepada 3 minit 16 saat (63%). Ujian pada sistem lain menunjukkan peningkatan prestasi sekurang-kurangnya 48%.

Pembangun yang menyediakan perubahan itu juga cuba melaksanakan prototaip kod resolusi pergantungan dalam C++ atau Rust, tetapi tugas itu terlalu sukar kerana ia memerlukan pemindahan kod yang banyak, dan diragui bahawa hasilnya akan berbaloi dengan usaha .

Sumber: opennet.ru

Tambah komen