Rumah > hujung hadapan web > tutorial js > Ujian prestasi fungsi tanpa nama dan dinamakan dalam pengetahuan JavaScript_Basic

Ujian prestasi fungsi tanpa nama dan dinamakan dalam pengetahuan JavaScript_Basic

WBOY
Lepaskan: 2016-05-16 16:37:17
asal
1238 orang telah melayarinya

Kami sering menulis panggilan balik melalui fungsi tanpa nama.

Ringkasnya, anonymous bermaksud fungsi tanpa nama, yang biasanya dilaksanakan serta-merta. Tetapi bagaimanakah prestasinya berbanding dengan fungsi yang dinamakan (fungsi dengan nama)?

Kami boleh membandingkan komputer yang boleh melaksanakan perintah Shell dan menggunakan sejumlah besar panggilan fungsi untuk melihat masa pelaksanaan kedua-duanya:

tanpa nama.js

Salin kod Kod adalah seperti berikut:

kiraan var = 100000000
, jumlah = 0
manakala (kira--) (fungsi() { jumlah })()

Laksanakannya
Salin kod Kod adalah seperti berikut:

$ nod masa tanpa nama.js
0m1.456s sebenar
pengguna 0m0.015s
sys 0m0.031s

Mari kita lihat fungsi yang dinamakan

bernama.js

Salin kod Kod adalah seperti berikut:

kiraan var = 100000000
, jumlah = 0

var cb = function() {
jumlah
}

sementara (kira--) cb()


Laksanakannya
Salin kod Kod adalah seperti berikut:

$ nod masa bernama.js
0m0.575s sebenar
pengguna 0m0.000s
sys 0m0.046s

Fungsi yang dinamakan adalah lebih pantas, mengapa ini? Sebenarnya, ia tidak sukar untuk dijelaskan. Fungsi Anonymous perlu mentafsir semula panggilan balik setiap kali, tetapi fungsi yang dinamakan hanya perlu ditafsirkan sekali, jadi prestasi akan dipertingkatkan . Tidak perlu memisahkan panggilan balik yang sangat mudah ditulis sebagai pembolehubah lain.

Selain itu, terdapat dua cara untuk menulis fungsi bernama:

Ekspresi fungsi

Salin kod Kod adalah seperti berikut:

var func = function() {
console.log('a')
}

Pengisytiharan fungsi
Salin kod Kod adalah seperti berikut:

function func() {
console.log('b')
}

Malah, mungkin ada masalah jika kedua-duanya digunakan bersama, seperti
Salin kod Kod adalah seperti berikut:

var func = function() {
console.log('a')
}
function func() {
console.log('b')
}
//Outputnya ialah: a

Oleh itu, bentuk ungkapan fungsi kebanyakannya digunakan pada masa ini, tetapi apakah prestasi pengisytiharan fungsi?

bernama2.js

Salin kod Kod adalah seperti berikut:

kiraan var = 100000000
, jumlah = 0

fungsi cb() {
jumlah
}

sementara (kira--) cb()


Laksanakan dan bandingkan keduanya
Salin kod Kod adalah seperti berikut:

$ nod masa bernama.js
0m0.553s sebenar
pengguna 0m0.000s
sys 0m0.015s

$ nod masa bernama2.js
0m0.529s sebenar
pengguna 0m0.000s
sys 0m0.047s


Nampaknya pengisytiharan fungsi akan menjadi lebih cepat, tetapi kelajuannya sangat, sangat tidak jelas, secara peribadi, saya masih mengesyorkan menulis pengisytiharan fungsi.

PS: Data ini telah diuji menggunakan git-base di bawah Windows 7.

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan