[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
44
(2): (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)10:05 ID:RJZpwhgn0(1/6) AAS
>>41
要素数や重複要素のばらつき具合によって結果は変わるが、最終的には力業が最速な事が多い
外部リンク:jsfiddle.net

極端な結果になっているのは重複要素がすぐそばにあり、while文による検索ですぐに見つかる為だ
重複要素が遠い位置にあるなら、while文による検索が遅くなるケースも十分にある

>>41のコードが比較的高速なのも重複要素が比較的近くにある為だ
Object.valuesやArray#filterによる変換コストが検索コストより高くついているので、他のコードが比較的遅い
省2
45: (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)10:08 ID:RJZpwhgn0(2/6) AAS
>>44の補足
jsfiddleのconsoleはconsole.time()を実装していないようだ
ベンチマーク結果はブラウザのコンソールで確認する必要がある
46
(1): (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)10:28 ID:RJZpwhgn0(3/6) AAS
すまん
>>44のwhile_loopは期待通りに動かないので忘れてほしい(console.assert()のコードをミスって気づかなかった)
重複要素のばらつき具合によるが、(>>41の配列においては)暫定最速は>>41
47
(1): (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)10:46 ID:RJZpwhgn0(4/6) AAS
>>46
console.assert()の修正、重複チェックをkindのみに修正したら、mapが最速になった
外部リンク:jsfiddle.net
48: (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)11:16 ID:RJZpwhgn0(5/6) AAS
>>47
高速化で考えるべきは「ループ回数の削減」と「変換回数の削減」

>>41 source
>>42 reduce
>>47 map

reduceはループ回数は削減されているが、変換回数がsourceよりも多い
要素数6では「変換コスト > 検索コスト」になってしまい、sourceよりも遅い
省6
49
(1): (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)11:42 ID:RJZpwhgn0(6/6) AAS
>>39
a要素でマークアップされているなら、難しくはない

for (let a of document.querySelectorAll('a[href]')) a.target = '_blank';

window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s