Jest rok 2014 i kilka lat za późno. Mimo to myślę, że moja uwaga dotyczy:
IMHO ta dyskusja dość mocno wyleciała z proporcji. Cytując wyżej wspomniany post na blogu :
Większość bibliotek narzędzi JavaScript, takich jak Underscore, Valentine i wu, korzysta z „podwójnego podejścia natywnego”. Takie podejście preferuje natywne implementacje, wracając do waniliowego JavaScript tylko wtedy, gdy natywny odpowiednik nie jest obsługiwany. Ale jsPerf ujawnił interesujący trend: najskuteczniejszym sposobem na iterację tablicy lub kolekcji podobnej do tablicy jest całkowite uniknięcie implementacji natywnych, zamiast tego wybór prostych pętli.
Jakby „proste pętle” i „waniliowe Javascript” były bardziej natywne niż implementacje metod Array lub Object. Jezu ...
Z pewnością byłoby miło mieć jedno źródło prawdy, ale tak nie jest. Nawet jeśli powiedziano ci inaczej, nie ma Boga Waniliowego, moja droga. Przepraszam. Jedynym prawdziwym założeniem jest to, że wszyscy piszemy kod JavaScript, który ma na celu osiąganie dobrych wyników we wszystkich głównych przeglądarkach, wiedząc, że wszystkie mają różne implementacje tych samych rzeczy. To dziwka, z którą trzeba sobie poradzić, delikatnie mówiąc. Ale to jest przesłanka, czy ci się to podoba, czy nie.
Być może wszyscy pracują nad projektami na dużą skalę, które wymagają twitterowej wydajności, aby naprawdę zobaczyć różnicę między 850 000 (podkreślenie) a 2 500 000 (lodash) iteracji na liście na sekundę teraz!
Ja nie jestem. To znaczy pracowałem nad projektami, w których musiałem zająć się problemami z wydajnością, ale nigdy nie zostały one rozwiązane ani spowodowane ani przez podkreślenie, ani przez Lo-Dash. I dopóki nie zrozumiem prawdziwych różnic w implementacji i wydajności (mówimy teraz o C ++), powiedzmy, że istnieje pętla nad iterowalnym (obiekt lub tablica, rzadka lub nie!), Raczej nie przeszkadza mi żadna roszczenia oparte na wynikach platformy porównawczej, która jest już opiniowana .
Potrzebuje tylko jednej aktualizacji, powiedzmy Rhino, aby podpalić implementacje metody Array w taki sposób, aby żadna „średniowieczna metoda pętli nie działała lepiej i na zawsze, a kapłan nie może się kłócić o prosty fakt, że wszystkie nagłe metody tablicowe w FF są znacznie szybsze niż jego / jej zdaniem pieprzony mózg. Człowieku, nie możesz oszukiwać środowiska wykonawczego, oszukując środowisko wykonawcze! Pomyśl o tym, promując ...
twój pasek narzędzi
... następnym razem.
Aby zachować aktualność:
- Użyj Podkreślenia, jeśli masz wygodę bez poświęcania natywnego ish.
- Użyj Lo-Dash, jeśli podoba ci się wygoda i lubisz jego rozszerzony katalog funkcji (głębokie kopiowanie itp.) I jeśli rozpaczliwie potrzebujesz natychmiastowej wydajności, a co najważniejsze, nie przejmuj się alternatywą, gdy tylko natywny interfejs API przestanie być widoczny. opiniotwórcze prace. Co się stanie wkrótce. Kropka.
- Istnieje nawet trzecie rozwiązanie. MAJSTERKOWANIE! Poznaj swoje środowiska. Wiedzieć o niespójnościach. Przeczytaj ich kod ( John-David i Jeremy ). Nie używaj tego ani tamtego, nie będąc w stanie wyjaśnić, dlaczego warstwa spójności / zgodności jest naprawdę potrzebna i poprawia przepływ pracy lub poprawia wydajność aplikacji. Jest bardzo prawdopodobne, że twoje wymagania są spełnione przez prosty wypełniacz, który jesteś w stanie sam napisać. Obie biblioteki to zwykła wanilia z odrobiną cukru. Oboje po prostu walczą o to, kto podaje najsłodsze ciasto . Ale uwierz mi, w końcu oboje gotują tylko z wodą. Nie ma boga wanilii, więc nie może być papieża wanilii, prawda?
Wybierz podejście, które najbardziej odpowiada Twoim potrzebom. Jak zwykle. Wolę w każdej chwili wycofywanie się z rzeczywistych wdrożeń niż wyrażanie oszustw w czasie wykonywania, ale nawet to wydaje się obecnie kwestią gustu. Trzymaj się wysokiej jakości zasobów, takich jak http://developer.mozilla.com i http://caniuse.com, a wszystko będzie dobrze.