erwit

tu funkcja to

  • dzielo sztuki 15.2% (7)
  • nieczytelny szajs 34.8% (16)
  • funkcja jak funkcja 50.0% (23)

46 głosów

  • Najlepsze
  • Wszystkie komentarze
Jurigag
@erwit: przykładowo sobie odpaliłem podobny kod(bez parse) w 100tys iteracji dla jakiejś 20 elementowej tablicy i pierwotny kod wykonuje się w 3 ms, a ten z slicem i somem w 195 ms xD @MKu8ar: @Marmite:
Marmite
@erwit: Dwukrotne wywołanie tej samej funkcji parsującej JSON, dwója.
Marmite
@Jurigag: Podbijam jednym przebiegiem pętli mniej:

return JSON.parse(members).slice(0, 2).some(function(member) { return member.socket === socket.id; })
W twoim nalezałoby dodatkowo na końcu zrobić !== -1 EDIT: jak odpisywałem, to tego nie było (✌ ゚ ∀ ゚)☞
Jurigag
@erwit: cóż, wyjściowe rozwiązanie o ile parse przesuniesz do zmiennej będzie z 4 razy szybsze niż return JSON.parse(members).slice(0, 2).some(function(member) { return member.socket === socket.id; }) dla małych tablic/liczby powtórzeń, jak będziesz robił taki kod w pętli/dla dużych tablic to różnica będzie gigantyczna na korzysć pierowtnego rozwiązania
Marmite
@Jurigag: To akurat nic dziwnego, nie od dziś wiadomo, że funkcje iterujące po tablicach i wykonujące callbacki są w JS bardzo kosztowne.
K.....a
K.....a
Treść przeznaczona dla osób powyżej 18 roku życia...
erwit
erwit Autor
0
@Marmite: a jakby to mozna zrobic zeby tylko raz parsowac, jezeli elementami tego jsona sa inne jsony i potrzbuje z nich wyciagnac to pole socket?
J.....n
J.....n
@Marmite: ale jak on ma to zrobić za jednym razem

erwit
erwit Autor
0
nie znam się na js


@Jojne_Zimmerman: no ja tez wlasnie nie bardzo :(
Marmite
@erwit: @Jojne_Zimmerman: no co wy xD var whatever = JSON.parse(members);
erwit
erwit Autor
0
@Marmite: no tak, to oczywiste. myslalem, ze masz jakis lepszy patent na to :< Wtedy juz nie bedzie taka ladna
erwit
erwit Autor
0
@Marmite: @bmFyY3l6bWFu: @Jojne_Zimmerman: ale czy jak sobie przeparsuje raz, to to nie zostanie gdzies w cache'u ? Sorry za noobskie pytanie nie ogarniam event loop i internalsow js'owych
Jurigag
@Marmite: a nie lepiej return JSON.parse(members).slice(0,2).map(function(e) { return e.socket; }).indexOf(socket.id) != -1; ? ( ͡° ʖ̯ ͡°) @erwit:
Jurigag
@Marmite: dopisałem w zasadzie bo zapomniałem, no i zapomniałem o !== xd w sensie indexOf = dodatkowa pętla a u ciebie brak ? w sumie twój kod wygląda spoko xd taki kod to cała kwintesencja JS'a, zamiast robić coś "normalnie" i po najmniejszej linii oporu powinniśmy właśnie stosować takie coś

Marmite
@Jurigag: No tak, bo właściwie po co robić map i dopiero na zmapowanej tablicy po kolei sprawdzać elementy, skoro można to zrobić już od razu?
Jurigag
@Marmite: a no w sumie racja xd
M.....r
M.....r
@Marmite: dostosowane do ES6:

const checkRoom = (members) => JSON.parse(members).slice(0, 2).some((member) => member.socket === socket.id)
erwit
erwit Autor
0
@Marmite: @Jurigag: jaka jaka bedzie roznica w wydajnosci? bo potwornie sie to czyta

edit: moze to od @MKu8ar: troche mnie potwornie :)
Jurigag
@MKu8ar: kurde chciałem to napisać xD