Sejauh manakah prestasi penyediaan/suntikan Vue 3?
P粉946336138
2023-08-26 09:46:02
<p>Saya mengusahakan projek yang bergantung pada <kod>menyediakan</code> untuk pengurusan negeri global. Pada mulanya, objek <code>provide</code>d adalah kecil, tetapi ia berkembang apabila projek itu berkembang. </p>
<p>Berapa banyak kesannya terhadap prestasi aplikasi dengan menyuntik objek ini di tempat data diperlukan? Tanpa melaksanakan alat pengurusan keadaan global seperti Pinia, adakah patut memecahkan objek besar yang kami sediakan menjadi objek berasingan untuk menyediakan "ketulan" data di mana diperlukan? </p>
Saya telah melakukan beberapa penandaarasan asas dan tertanya-tanya sama ada pembolehubah yang kerap digunakan perlu disediakan/disuntik, atau jika ia perlu diakses dari kedai Pinia dalam sejumlah besar komponen.
Keputusan menunjukkan tiada perbezaan prestasi yang ketara.
Kes ujian pertama saya sangat asas: Menyediakan/menyuntik
bool
tunggal tidak sama dengan mendapatkannya daripada storan Pinia dalam komponen dan memaparkan komponen berbilang kali. 50k komponen mengambil masa antara 20-24 saat untuk dipaparkan, juga menggunakan menyediakan/menyuntik dan menggunakan Pinia. Tidak ada perbezaan yang konsisten untuk mengatakan salah satu lebih cepat/lambat.Dalam ujian kedua, saya menggunakan objek yang lebih besar, susunan kira-kira 1MiB data (diukur dalam cetakan JSON tanpa ruang). Perbezaannya juga tidak ketara. Saya telah menghasilkan 50k komponen dan kedua-duanya menggunakan suntikan dan akses storan mengambil masa yang lebih kurang sama, antara 19-26 saat.
Komponen dalam setiap kes memaparkan nilai boolean pembolehubah tema, jadi masa pemaparannya tidak meningkat dengan data besar berbanding nilai boolean kecil.
Lagipun, saya telah membuat kesimpulan bahawa sebenarnya tidak ada perbezaan yang bermakna antara provide/inject dan kedai Pinia. Satu-satunya perbezaan yang jelas ialah prestasi kurang stabil apabila data lebih besar dan prestasi lebih boleh diramal apabila data lebih kecil. Tidak kira berapa kali saya mengulangi ujian pada nilai boolean, masa sentiasa antara 20-24 saat dan apabila data meningkat, saya mendapat beberapa pencilan seperti 19 saat atau 26 saat. Sekali lagi tiada yang konsisten, ini hanya boleh menjadi turun naik dalam penggunaan CPU sebenar saya dan tiada kaitan dengan Provide/inject vs penggunaan kedai Pinia.
Saya telah menguji pada Chrome v110 (x86_64) pada macOS menggunakan vue@3.2.47 dan pinia@2.0.32.
Kod ujian yang saya gunakan: