jQuery selector cache (PoC)

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Tarre



Medlem i: 4350 dagar

Status: Offline



#740858
Inlägg Skrivet: 2016-06-13 15:09      Ämne: jQuery selector cache (PoC) Citera

Jag satt en kväll och funderade på om jQuery hade någon cache för sina select-taggar och det har dom inte på grund av olika förståeliga skäl.

I alla fall, det här är ett test på hur annorlunda det kan bli (i LOAD time) med hjälp av av denna lilla kod

PHP:
1:
 var $$ = new function () {
2:
    // Här sparas all data
3:
    var = {};
4:
    // om $$('x') inte är undefined så retunera $('x'), annars sätt $$('x') till $('x') och retunera $('x')
5:
    return function (n) {
6:
        return c[n] ? c[n] : c[n] = $(n)
7:
    }
8:
}; 



Här är resultatet med $\$$("#selector").val();

KOD:
1:
 
2:
Result: 100 * 50 000 runs (2 for loops) ! ! ! NOT STRICT ! ! !
3:
 
4:
$
5:
Total load: 16490 MS
6:
Avarage of 100 : 164.9 MS
7:
Highest of 100 : 292 MS
8:
Lowest of 100 : 158 MS
9:
diff lowest-highest : 134 MS (46%)
10:
 
11:
 
12:
$$
13:
Total load: 6971 MS
14:
Avarage of 100 : 69.71 MS
15:
Highest of 100 : 94 MS
16:
Lowest of 100 : 65 MS
17:
diff lowest-highest : 29 MS (31%)
18:
 
19:
 
20:
######## Result: 1000 * 5000 runs (2 for loops)! ! ! NOT STRICT ! ! !
21:
 
22:
$
23:
Total load: 17116 MS
24:
Avarage of 5000 : 17.116 MS
25:
Highest of 5000 : 31 MS
26:
Lowest of 5000 : 15 MS
27:
diff lowest-highest : 16 MS (52%)
28:
 
29:
$$
30:
Total load: 6921 MS
31:
Avarage of 5000 : 6.921 MS
32:
Highest of 5000 : 13 MS
33:
Lowest of 5000 : 6 MS
34:
diff lowest-highest : 7 MS (54%)
35:
 
36:
####### Result: 100 * 50 000 runs (2 for loops) ! ! ! STRICT ! ! !
37:
 
38:
$
39:
Total load: 16922 MS
40:
Avarage of 50000 : 169.22 MS
41:
Highest of 50000 : 215 MS
42:
Lowest of 50000 : 160 MS
43:
diff lowest-highest : 55 MS (26%)
44:
 
45:
$$
46:
Total load: 6757 MS
47:
Avarage of 50000 : 67.57 MS
48:
Highest of 50000 : 76 MS
49:
Lowest of 50000 : 64 MS
50:
diff lowest-highest : 12 MS (16%)
51:
 
52:
####### Result: 1000 * 5000 runs (2 for loops) ! ! ! STRICT ! ! !
53:
$
54:
Total load: 16982 MS
55:
Avarage of 5000 : 16.982 MS
56:
Highest of 5000 : 36 MS
57:
Lowest of 5000 : 15 MS
58:
diff lowest-highest : 21 MS (58%)
59:
 
60:
$$
61:
Total load: 6724 MS
62:
Avarage of 5000 : 6.724 MS
63:
Highest of 5000 : 11 MS
64:
Lowest of 5000 : 6 MS
65:
diff lowest-highest : 5 MS (45%)
66:
 



Det som är mest spännande är Avarage of x där man ser att $$ vinner med nästan 100* över$


FAQ:

Q: Varför har inte jQuery\Sizzle gjort så att alla selektor-taggar blir cachade från början?

A: För dynamiska objekt som tillkommer / försvinner kommer inte att vara samma "objekt".

Exempelvis på hur det kan gå snett med att använda cache:

PHP:
1:
 <a id="test"Hello </a>
2:
 
3:
$$('#test').text();  // = Hello
4:
 
5:
 
6:
$$('#test').delete();
7:
 
8:
$(document).html("<a id=\"test\"> test </a>");
9:
 
10:
$$('#test').text(); //  = ERROR cannot read property text() of null\undefined.
11:
 
12:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic