Anda selalu dapat memvalidasi kinerja di situs ini juga melalui beberapa browser: jsperf.com ... Berikut adalah beberapa kasus uji untuk dijelajahi: jsperf.com/browse
iwasrobbed
Jawaban:
164
Memperbarui:
Saya melakukan tes setelah komentar dan empat suara positif untuk komentar. Ternyata apa yang saya katakan adalah jawaban yang benar. Inilah hasilnya:
Ini ismulti-tujuan, Anda dapat misalnya melakukan is('.class'),, is(':checked')dll yang berarti ismemiliki lebih banyak hal yang harus dilakukan di mana hasClassterbatas yang hanya memeriksa kelas yang disetel atau tidak.
Karenanya, hasClassharus lebih cepat jika kinerja di level mana pun adalah prioritas Anda.
Apakah Anda punya bukti bahwa ini lebih cepat? Hanya karena suatu fungsi memiliki fungsionalitas yang lebih sedikit BUKAN berarti ia secara otomatis lebih cepat.
Kris
15
@Kris: Ya saya lakukan: jsf.com/asclass-vs-is-so . Seperti yang saya katakan, hasClassadalah jauh lebih cepat.
Sarfraz
4
'jauh lebih cepat' => 'lebih cepat'
Kirk Strobeck
@SgtPooki, saya hanya meminta bukti; jika itu benar saya ingin tahu mengapa. Saya penasaran seperti itu :). Anda dapat dengan mudah memiliki lebih banyak fungsionalitas dan membuatnya lebih cepat; itu selalu tergantung pada implementasi. 99% Anda adalah generalisasi menyeluruh dan belum tentu kondisi pengembangan perangkat lunak yang sebenarnya. Pertanyaan Anda tentang "Apakah jQuery akan pernah secepat JavaScript? Jawaban selain tidak adalah salah." bukanlah pertanyaan yang bagus; jQuery sebenarnya memiliki banyak pengoptimalan yang akan memberikan akses lebih cepat ke elemen DOM setelah data di-cache; itu sangat tergantung pada penggunaan spesifik Anda.
Kris
1
@SgtPooki sejauh lebih cepat lihat mesin pemilih mendesis; karena saya terus menyebutkan itu tergantung pada implementasi dan di browser lama yang tidak mendukung kueri secara native, kemungkinan besar akan lebih cepat melalui implementasi jQuery karena tidak ada versi asli (menang secara default). Juga jika Anda terus mengingat elemen DOM yang sama, bergantung pada browser dan versinya, mungkin diperlukan waktu tambahan karena jQuery dapat menyimpan elemen ini ke cache untuk pengambilan lebih cepat. Biasanya fungsi JavaScript asli akan lebih cepat; tetapi itu tergantung pada dukungan dan implementasi browser.
Kris
13
Karena islebih umum daripada hasClassdan digunakan filteruntuk memproses ekspresi yang disediakan, sepertinya itu hasClasslebih cepat.
Saya menjalankan kode berikut dari konsol Firebug:
Bukan perbedaan yang besar, tetapi mungkin relevan jika Anda melakukan banyak pengujian.
EDIT ketika saya mengatakan 'bukan perbedaan besar, maksud saya adalah Anda perlu melakukan 10.000 siklus untuk melihat 0,8 perbedaan. Saya akan terkejut melihat aplikasi web yang beralih dari iske hasClassakan melihat peningkatan yang signifikan di semua kinerja. Namun, saya akui bahwa ini adalah peningkatan kecepatan 35%.
Jawaban:
Memperbarui:
Saya melakukan tes setelah komentar dan empat suara positif untuk komentar. Ternyata apa yang saya katakan adalah jawaban yang benar. Inilah hasilnya:
http://jsperf.com/hasclass-vs-is-so
Ini
is
multi-tujuan, Anda dapat misalnya melakukanis('.class')
,,is(':checked')
dll yang berartiis
memiliki lebih banyak hal yang harus dilakukan di manahasClass
terbatas yang hanya memeriksa kelas yang disetel atau tidak.Karenanya,
hasClass
harus lebih cepat jika kinerja di level mana pun adalah prioritas Anda.sumber
hasClass
adalah jauh lebih cepat.Karena
is
lebih umum daripadahasClass
dan digunakanfilter
untuk memproses ekspresi yang disediakan, sepertinya ituhasClass
lebih cepat.Saya menjalankan kode berikut dari konsol Firebug:
Saya mendapatkan:
Bukan perbedaan yang besar, tetapi mungkin relevan jika Anda melakukan banyak pengujian.
EDIT ketika saya mengatakan 'bukan perbedaan besar, maksud saya adalah Anda perlu melakukan 10.000 siklus untuk melihat 0,8 perbedaan. Saya akan terkejut melihat aplikasi web yang beralih dari
is
kehasClass
akan melihat peningkatan yang signifikan di semua kinerja. Namun, saya akui bahwa ini adalah peningkatan kecepatan 35%.sumber
Keduanya harus cukup dekat dalam hal kinerja tetapi
$('#foo').hasClass('bar');
tampaknya lebih mudah dibaca dan secara semantik benar bagi saya.sumber
.hasClass
jauh lebih cepat daripada yang.is
bisa Anda uji dari sini . Ubah kasus uji menurut Anda.sumber