Kom på att Array.map eller Array.filter hade fixat biffen!
Gjorde en modifiering av metoden och använde Array.prototype istället, vilket gör metoden enklare att använda.
Nyfiken som jag är skapade jag även ett prestandtest på jsperf.com mellan jQuery.filter, Array.filter och min egen implementation av Array.where.
Följande slutsatser kan dras av detta test.
- Validering kostar
- Function.call kostar
När jag körde koden ovan, klarade den ca 9 operationer/sekund medans Array.filter klarade ca 110 operationer/sekund (testat med Chrome 19 och Firefox 12 på Mac OS X 10.7). Efter att jag modifierade koden och plockade bort validering och Function.call klarade min implementation ca 370 operationer/sekund. Denna kod ses nedan:
Betyder detta att min implementation är bättre än Array.filter eller jQuery.filter? Kort och gott. Nej.
Varför är då min implementation snabbast?
Kanske för att...
- Den inte har massa validering och annat som bör vara på plats?
- Jag råkat missa något?
- Mitt prestandatest är felaktigt?
I skrivande stund vet jag inte. Men när jag får tid över ska jag försöka ta reda på mer.
Återkom gärna om du vet!
/Nils
Inga kommentarer:
Skicka en kommentar