webForumDet fria alternativet

indexOf vs. match

10 svar · 374 visningar · startad av Web-Tor

Web-TorMedlem sedan nov. 200013 890 inlägg
#1

Är det någon prestandaskillnad mellan funktionerna indexOf och match?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Antagligen är match lite slöare eftersom den kan använda reguljära uttryck.

Web-TorMedlem sedan nov. 200013 890 inlägg
#3

Jo, ungefär så tänkte jag också. indexOf är ju lite simplare.
Jag har ett tungt script som jag gärna hade snabbat upp lite så det hade varit bra att veta vilket som är snabbast.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Lite benchmarking visar att indexOf är snabbare i alla browsers. Resultatet och testet finns här: http://member.webforum.nu/6067/versus.html

Web-TorMedlem sedan nov. 200013 890 inlägg
#5

1000 tack! :f
Hur fick du fram det här?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

Hur menar du?
Koden skrev jag själv. Värdena fyllde jag i vartefter koden kördes.

Web-TorMedlem sedan nov. 200013 890 inlägg
#7

Värdena fyllde jag i vartefter koden kördes.

Vilken kod var det som kördes?

dectgapMedlem sedan sep. 20021 655 inlägg
#8

nitro2k01 skrev:

Lite benchmarking visar att indexOf är snabbare i alla browsers. Resultatet och testet finns här: http://member.webforum.nu/6067/versus.html

Snyggt test, och intressant hur mycket snabbare det gick med IE jämfört med FireFox.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#9

Koden är en for-loop som upprepar två operationer av var typ tiotusen gånger, och tiden det tar för detta räknas ut och skrivs ut längst ner på sidan med document.write. Dessa värden har jag fyllt i statiskt i tabellen som referens.

dectgapMedlem sedan sep. 20021 655 inlägg
#10

En iakttagelse:
Om du bara vill se om en sträng innehåller en annan sträng är det ingen mening med att använda match-metoden.
Om man istället använder regexp-metoden test, som returnerar true om strängen matchar mönstret och false annars, får man ingen negativ prestandaskillnad i förhållande till indexOf. I Firefox går det t o m snabbare med test än indexOf.

Byt ut den sista for-loopen i nitros kod till

for (i=0; i<10000; i++){
	dest = matchstr1.test(sourcestr);
	dest = matchstr2.test(sourcestr);
}

för att se skillnaden.

Web-TorMedlem sedan nov. 200013 890 inlägg
#11

Jag har nu bytt ut match till indexOf på de ställen där det går och scriptet blev betydligt snabbare.
Tack än en gång. :)

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)