-
ID:UCtoyZ さんの質問

jQueryのdom探査スピードについてです。
```例1
//findを通してアクセス
var $body = $(’#body’);
var $main = $body.find(’#main’);
var $side = $body.find(’#side’);
```
でみつけていくのか、
```例2
//直接IDアクセス
var $body = $(’#body’);
var $main = $(’#main’);
var $side = $(’#side’);
```
でみつけていくのか、どちらのほうが速いか知りたいです。
みなさんはどちらでやってますか?

みんなの回答 3 件

ID:jKmPD2 さんの回答

直でやってます
ベンチマークは分かりません

ID:UCtoyZ

ありがとうございます。

ID:SgzgxF さんの回答

jqueryを使った場合はわからないですけど、javascirptであれば直接、IDにアクセスした方が速いです。(ベンチマークとったことあり)

ID:SgzgxF

っていうか、Jqueryでも直の方が速いはず。前者は不必要に#bodyを取得してから、次の処理をしているけど、そもそも#bodyをとらなくても次の処理は後者の例のように出来るので。1ステップ無駄が多い。

ID:UCtoyZ

ありがとうございます。
#bodyも今後つかう場合はどうでしょう

ID:eapP1y

IDでタグづけされたものなら、直で取れば良いと思いますよ。IDは一つしか存在しないものなので処理が速いです。

ID:zD/REx さんの回答

IDのように1つで決まるものは、一つの指定一回で取ったほうが良いと言われています。短いほうがいいです。
まあ、そもそもjQueryを使う時点で速度を気にしても仕方ありませんし、IDの取得であれば尚更でしょう。
最近はQuerySelectionにもJITが実装されたりしていますし、あまり気にせず読みやすい方を取る方がいいです。

ID:eapP1y

横からで恐縮ですがjitって何ですか?queryselectorはよく使ってます。

ID:zD/REx

実行されるその場で(Just-in-Time)コンパイルして最適化することです。
こういう最適化はどんどん入ってくるので、何がどの位いいかは常に変わっていきます。
特に、ブラウザは一般的に使われているようなコードが高速に動くよう目指していきます。
ですので今多少の高速化のために頑張ってコードを書いたとしても、近いうちに無駄になってしまう可能性もあるということです。
ttps://speakerdeck.com/constellation/css-jit-optimizing-css-selector-matching-with-just-in-time-compilation
ttps://www.webkit.org/blog/3271/webkit-css-selector-jit-compiler

最終更新日:2014-09-11 (2,615 views)

関連するトピックス

ページ上部に戻る