


Ringkasan mata pengetahuan tentang meningkatkan kemahiran JavaScript performance_javascript
1. Memuatkan lokasi fail js
Dalam fail HTML, teg
1. Jika fail js tidak mempunyai keperluan khas yang menunjukkan bahawa ia perlu dimuatkan dan disusun sebelum halaman dipaparkan, kemudian pilih untuk meletakkan fail js sebelum teg kandungan yang dibentangkan pada halaman). Fail css masih diletakkan di kawasan
Melakukan ini akan membolehkan pengguna melihat halaman reka letak dan bukannya halaman kosong Kemudian beberapa orang akan menunjukkan: Data mesti dimuatkan melalui permintaan js. Pemuatan data boleh diisih Antara muka yang diperlukan dengan segera boleh dilaksanakan terlebih dahulu.2. Jika fail js ini menyatakan bahawa ia perlu dilaksanakan terlebih dahulu untuk memaparkan kandungan halaman dengan lebih baik, kemudian letakkan animasi pemuatan kecil pada js atau halaman pertama, yang boleh menjadi adegan animasi yang menarik atau comel. Ini juga dapat mengelakkan kebosanan menunggu pengguna dengan lebih baik Mungkin mereka akan lebih berminat dengan animasi pemuatan, yang boleh meningkatkan pengalaman pengguna projek.
Cadangan akhir: Letakkan teg
2. Menggabungkan fail js
Dalam banyak pembangunan pasukan, kami mungkin meletakkan blok kod dengan fungsi yang berbeza dalam fail js yang berbeza, supaya lebih mudah untuk semua orang bekerjasama untuk menulis kod semasa proses pembangunan Lagipun, kami hanya perlu mencari folder atau fail yang sepadan bukannya dalam satu Cari kaedah dalam dokumen yang sangat panjang. Ini sememangnya akan meningkatkan kecekapan pembangunan pasukan dan memudahkan orang baharu melakukan pembangunan dan penyelenggaraan sekunder selepas menyertainya. Jadi bagaimana pula dengan meletakkan isu ini ke dalam prestasi halaman? Inilah masalahnya, dinyatakan dalam buku: Setiap permintaan HTTP membawa overhed prestasi tambahan, jadi memuat turun satu fail 100 KB akan lebih pantas daripada memuat turun empat fail 25 KB.
Memuat turun satu fail 100KB adalah lebih pantas daripada memuat turun empat fail 25KB, dan terdapat faedah besar dalam membezakan setiap fail semasa proses pembangunan, jadi isu penggabungan akan ditangani selepas pembangunan selesai biasa kepada semua orang, bukan? Terdapat begitu banyak alat bahagian hadapan sekarang, jadi gunakan sahaja pemampatan yang biasa anda gunakan~
Biar saya nyatakan secara ringkas di sini bahawa anda juga boleh menggunakan atribut defer dan async semasa memuatkan fail untuk pemuatan malas dan pemuatan tak segerak Dalam penyemak imbas moden, kebanyakannya sudah menyokong atribut defer yang saya tidak biasa menggunakan ini. tidak tahu jika akan ada sebarang masalah khusus. Rakan-rakan yang berminat boleh google sendiri point ilmu ini, dan saya akan sebutkan secara ringkas di sini.
Kebanyakan rangka kerja hari ini turut menyokong pemuatan malas dan pemuatan atas permintaan.
3. Akses data yang lebih pantas
Untuk penyemak imbas, lebih dalam lokasi pengecam, lebih perlahan ia akan membaca dan menulisnya (begitu juga untuk rantai prototaip). Ini sepatutnya tidak sukar untuk difahami. Analogi yang mudah ialah: semakin jauh kedai runcit dari rumah anda, semakin lama masa yang anda ambil untuk membuat kicap... Nak nakal, kalau anda ambil masa yang lama untuk membuat kicap, sayur-sayuran. akan hangus -.-~
Jika kita perlu menggunakan nilai pembolehubah beberapa kali dalam fungsi semasa, maka kita boleh menggunakan pembolehubah setempat untuk menyimpannya terlebih dahulu
//修改前 function showLi(){ var i = 0; for(;i<document.getElementsByTagName("li").length;i++){ //一次访问document console.log(i,document.getElementsByTagName("li")[i]); //三次访问document }; }; //修改后 function showLi(){ var li_s = document.getElementsByTagName("li"); //一次访问document var i = 0; for(;i<li_s.length;i++){ console.log(i,li_s[i]); //三次访问局部变量li_s }; };
4. Pengoptimuman operasi DOM
Seperti yang kita semua tahu, operasi DOM menggunakan prestasi jauh lebih banyak daripada pelaksanaan JavaScript Walaupun kami tidak dapat mengelak daripada beroperasi pada DOM, kami boleh cuba mengurangkan penggunaan prestasi operasi ini sebanyak mungkin.Mari jelaskan perkara ini melalui kod:
function innerLi_s(){ var i = 0; for(;i<20;i++){ document.getElementById("Num").innerHTML="A"; //进行了20次循环,每次又有2次DOM元素访问:一次读取innerHTML的值,一次写入值 }; };
function innerLi_s(){ var content =""; var i = 0; for(;i<20;i++){ content += "A"; //这里只对js的变量循环了20次 }; document.getElementById("Num").innerHTML += content; //这里值进行了一次DOM操作,又分2次DOM访问:一次读取innerHTML的值,一次写入值 };
5. Kurangkan lukisan semula dan penyusunan semula Dom
Perubahan dalam reka letak elemen, penambahan kandungan, pemadaman atau perubahan saiz tetingkap penyemak imbas akan mengakibatkan pengaliran semula, manakala perubahan dalam warna fon atau warna latar belakang akan mengakibatkan lukisan semula.
Untuk operasi yang serupa dengan kod berikut, dikatakan bahawa kebanyakan penyemak imbas moden telah dioptimumkan (dioptimumkan menjadi 1 versi penyusunan semula):
//修改前 var el = document.getElementById("div"); el.style.borderLeft = "1px"; //1次重排版 el.style.borderRight = "2px"; //又1次重排版 el.style.padding = "5px"; //还有1次重排版 //修改后 var el = document.getElementById("div"); el.style.cssText = "border-left:1px;border-right:2px;padding:5px"; //1次重排版
针对多重操作,以下三种方法也可以减少重排版和重绘的次数:
1.Dom先隐藏,操作后再显示 2次重排 (临时的display:none)
2.document.createDocumentFragment() 创建文档片段处理,操作后追加到页面 1次重排
3.var newDOM = oldDOM.cloneNode(true)创建Dom副本,修改副本后oldDOM.parentNode.replaceChild(newDOM,oldDOM)覆盖原DOM 2次重排
六、循环的优化
这应该是较多人都知道的写法了,简单带过即可(后面还是用代码+注释形式说明)~
//修改前 var i = 0; for(;i<arr.lengthli++){ //每次循环都需要获取数组arr的length console.log(arr[i]); } //修改后 var i = 0; var len = arr.length; //获取一次数组arr的length for(;i<len;i++){ console.log(arr[i]); } //or var i = arr.length;; for(;i;i--){ console.log(arr[i]); }
七、合理利用二进制
如:对2取模,则偶数最低位是0,奇数最低位是0,与1进行位与操作的结果是0,奇数的最低位是1,与1进行位与操作的结果是1。
代码如下:
.odd{color:red} .even{color:yellow} <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul>
var i = 0; var lis = document.getElementsByTagName("li"); var len = lis.length; for(;i<len;i++){ if(i&1){ lis[i].className = "even"; } else{ lis[i].className = "odd"; } };
虽说现代浏览器都已经做的很好了,但是本兽觉得这是自己对代码质量的一个追求。并且可能一个点或者两个点不注意是不会产生多大性能影响,但是从多个点进行优化后,可能产生的就会质的飞跃了
JavaScript 总结的这几个提高性能知识点,希望大家牢牢掌握。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perbandingan prestasi Windows 10 vs. Windows 11: Mana satu yang lebih baik? Dengan pembangunan dan kemajuan teknologi yang berterusan, sistem pengendalian sentiasa dikemas kini dan dinaik taraf. Sebagai salah satu pembangun sistem pengendalian terbesar di dunia, siri sistem pengendalian Microsoft Windows sentiasa menarik perhatian ramai pengguna. Pada tahun 2021, Microsoft mengeluarkan sistem pengendalian Windows 11, yang mencetuskan perbincangan dan perhatian yang meluas. Jadi, apakah perbezaan prestasi antara Windows 10 dan Windows 11?

Sistem pengendalian Windows sentiasa menjadi salah satu sistem pengendalian yang paling banyak digunakan pada komputer peribadi, dan Windows 10 telah lama menjadi sistem pengendalian perdana Microsoft sehingga baru-baru ini apabila Microsoft melancarkan sistem Windows 11 baharu. Dengan pelancaran sistem Windows 11, orang ramai mula berminat dengan perbezaan prestasi antara sistem Windows 10 dan Windows 11 yang mana satu yang lebih baik antara kedua-duanya? Pertama, mari kita lihat W

Dalam era Internet mudah alih, telefon pintar telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian manusia. Prestasi telefon pintar selalunya secara langsung menentukan kualiti pengalaman pengguna. Sebagai "otak" telefon pintar, prestasi pemproses amat penting. Di pasaran, siri Qualcomm Snapdragon sentiasa mewakili prestasi kukuh, kestabilan dan kebolehpercayaan, dan baru-baru ini Huawei turut melancarkan pemproses Kirin 8000 sendiri, yang dikatakan mempunyai prestasi cemerlang. Bagi pengguna biasa, cara memilih telefon bimbit dengan prestasi yang kukuh telah menjadi isu utama. Hari ini kita akan

PHP dan Go ialah dua bahasa pengaturcaraan yang biasa digunakan, dan ia mempunyai ciri dan kelebihan yang berbeza. Antaranya, perbezaan prestasi merupakan isu yang dibimbangkan oleh semua orang. Artikel ini akan membandingkan bahasa PHP dan Go dari perspektif prestasi, dan menunjukkan perbezaan prestasi mereka melalui contoh kod tertentu. Mula-mula, mari kita perkenalkan secara ringkas ciri asas PHP dan bahasa Go. PHP ialah bahasa skrip yang pada asalnya direka untuk pembangunan web Ia mudah dipelajari dan digunakan dan digunakan secara meluas dalam bidang pembangunan web. Bahasa Go ialah bahasa tersusun yang dibangunkan oleh Google.

Ollama ialah alat super praktikal yang membolehkan anda menjalankan model sumber terbuka dengan mudah seperti Llama2, Mistral dan Gemma secara tempatan. Dalam artikel ini, saya akan memperkenalkan cara menggunakan Ollama untuk mengvektorkan teks. Jika anda belum memasang Ollama secara tempatan, anda boleh membaca artikel ini. Dalam artikel ini kita akan menggunakan model nomic-embed-text[2]. Ia ialah pengekod teks yang mengatasi prestasi OpenAI text-embedding-ada-002 dan text-embedding-3-small pada konteks pendek dan tugas konteks panjang. Mulakan perkhidmatan nomic-embed-text apabila anda telah berjaya memasang o

Perbandingan prestasi rangka kerja Java yang berbeza: Pemprosesan permintaan REST API: Vert.x adalah yang terbaik, dengan kadar permintaan 2 kali SpringBoot dan 3 kali Dropwizard. Pertanyaan pangkalan data: HibernateORM SpringBoot adalah lebih baik daripada Vert.x dan ORM Dropwizard. Operasi caching: Pelanggan Hazelcast Vert.x lebih unggul daripada mekanisme caching SpringBoot dan Dropwizard. Rangka kerja yang sesuai: Pilih mengikut keperluan aplikasi Vert.x sesuai untuk perkhidmatan web berprestasi tinggi, SpringBoot sesuai untuk aplikasi intensif data, dan Dropwizard sesuai untuk seni bina perkhidmatan mikro.

Perbandingan prestasi kaedah membalik nilai kunci tatasusunan PHP menunjukkan bahawa fungsi array_flip() berprestasi lebih baik daripada gelung for dalam tatasusunan besar (lebih daripada 1 juta elemen) dan mengambil masa yang lebih singkat. Kaedah gelung untuk membalikkan nilai kunci secara manual mengambil masa yang agak lama.

Teknik berkesan untuk mengoptimumkan prestasi berbilang benang C++ termasuk mengehadkan bilangan utas untuk mengelakkan perbalahan sumber. Gunakan kunci mutex ringan untuk mengurangkan perbalahan. Optimumkan skop kunci dan minimumkan masa menunggu. Gunakan struktur data tanpa kunci untuk menambah baik keselarasan. Elakkan sibuk menunggu dan maklumkan urutan ketersediaan sumber melalui acara.
