• 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?

Object Storage Arubacloud
+1 głos
280 wizyt
pytanie zadane 24 marca 2021 w JavaScript przez Oskar Szkurłat Bywalec (2,780 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 2021 przez adrian17 Ekspert (344,860 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 2021 przez Comandeer Guru (600,710 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 2021 przez adrian17 Ekspert (344,860 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 2021 przez Comandeer Guru (600,710 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 200 wizyt
0 głosów
1 odpowiedź 6,243 wizyt
+1 głos
2 odpowiedzi 1,145 wizyt
pytanie zadane 4 stycznia 2021 w Systemy operacyjne, programy przez Maxxxii Obywatel (1,260 p.)

92,537 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,923 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...