• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zużycie pamięci w zmiennych [JS] - optymalizacja?

+1 głos
97 wizyt
pytanie zadane 24 marca w JavaScript przez Oskar Szkurłat Bywalec (2,060 p.)

Cześć, ostatnio się zastanawiałem nad zużywaniem pamięci (optymalizacją) kodu oraz nad wprowadzeniem dobrej praktyki stosowania odpowiedniego typu zmiennych, gdzie to możliwe. I tutaj zrodziło się moje pytanie: czy w JavaScript jest sens oraz czy się da optymalizować zmienne pod tym kątem?
1. Czy jak np. użyję var x = true, zamiast var x = 1, to w ten sposób javascript w jakimkolwiek stopniu to odciąży? Zużyty zostanie 1 bit, zamiast 1 byte?
2. Czy jak mam bazę danych pomiarowych, w której występują powielające się wartości, czy dobrym pomysłem jest zastąpienie powtarzającej się wartości wartością o mniejszym rozmiarze, a może np. wprowadzenie null, bądź undefined. A potem stosując dane na podstawie rozpoznania null/undefined wczytać poprzednią wartość. Rozwiązanie takie brałbym pod uwagę w przypadku zapisu i odczytu z pliku.
Przykładowe zastąpienie powtarzających się danych przez null
3. Jakie są wasze dobre praktyki i rozwiązania w optymalizacji kodu? o ile da się dopracować takie szczegóły, jak zużycie pamięci i mocy obliczeniowej w JS?

1 odpowiedź

+5 głosów
odpowiedź 24 marca przez adrian17 Ekspert (300,820 p.)

1. Bezsensowna mikrooptymalizacja, która prawdopodobnie nic nie zmieni. W "zwykłym" interpreterze JSa każda wartość będzie mieć 8 bajtów, bo każda liczba to 64-bitowa liczba zmiennoprzecinkowa; z JITem, może się zorientuje co do typów i spakuje boole do 1 bajta (pakowanie do 1 bita jest rzadko używane bo ma swoje wady) a małe liczby do kilku bajtów, ale Twoje kombinowanie z używaniem `true` tam gdzie normalnie byś używał liczbę, prędzej by JITa skonfundowało i prędzej gorszy kod wygeneruje.

2. Bezsensowna mikrooptymalizacja, która prawdopodobnie nic nie zmieni. Ten sam powód co wyżej. Niespójne typy między elementami tablicy prędzej uniemożliwią optymalizacje; a jak wartości stringowe są znane, to lepiej polegać na wbudowanej deduplikacji stringów (interning).

3. Jakie są wasze dobre praktyki i rozwiązania w optymalizacji kodu?

Nie zgaduj z losowymi zmianami w losowych miejscach, tylko profiluj. Przeglądarki mają wbudowane potężne narzędzia do profilowania CPU i pamięci.

2
komentarz 24 marca przez Comandeer Guru (559,560 p.)

Od siebie dorzucę artykuł o tym, jak nie warto próbować być sprytniejszym od JiT-a. W zdecydowanej większości przypadków jedynie pogorszymy sprawę albo nic nie poprawimy.

2
komentarz 24 marca przez adrian17 Ekspert (300,820 p.)

Anybody preferring functional Array.prototype iteration methods to rusty old-school for(;;)-loops gets an additional piece of cake.

Eww :P

Dla mnie wciąż większą nauczką z tego jest żeby w ogóle o tym nie myśleć i po prostu pisać idiomatyczny kod.

1
komentarz 24 marca przez Comandeer Guru (559,560 p.)

Dla mnie wciąż większą nauczką z tego jest żeby w ogóle o tym nie myśleć i po prostu pisać idiomatyczny kod.

Dokładnie.

PS ale metody tablicowe to fajne są ;) 

Podobne pytania

0 głosów
2 odpowiedzi 141 wizyt
0 głosów
1 odpowiedź 1,937 wizyt
+1 głos
2 odpowiedzi 470 wizyt
pytanie zadane 4 stycznia w Systemy operacyjne, programy przez Maxxxii Użytkownik (940 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

85,243 zapytań

134,056 odpowiedzi

297,251 komentarzy

56,334 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...