Minified verze a velikost využité paměti

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Bernard Williams
Člen | 207
+
0
-

Nazdárek,

provádím zrovna nějaké srovnání Frameworků a knihoven. Když přišlo na měření využité paměti, tak jsem se v případě Nette dost zhrozil. Hodnota využité paměti byla cca 6,7 MB!! Číslo se mi vůbec nelíbilo a tak jsem si řekl, že je možná špatně napsaný testovací script. Využitou paměť jsem tedy změřil na holém skeletonu z distribuce. Číslo nebylo o moc uspokojující: 5,5 MB! Pak mě napadlo, že velkou roli na tom bude mít asi minified verze. Paměť jsem tedy zase změřil jak v mé aplikaci, tak i ve skeletonu, ale nyní už bez minified verze a výsledek:

Můj script: 2,6 MB
Skeleton: 3,1 MB

Což už je přeci jen schůdnější..

A co tím vším chci říct? Všude se píše a doporučuje, aby se na ostrých serverech využívala minified verze, kterou je mnohem snaží a rychlejší nahrát na server – s tím pochopitelně souhlasím, ale stojí tato pohodlnost za (v mém případě) 2,5 krát vyšší paměťové nároky? Troufám si tvrdit, že podobně na tom budou i ostatní stránky (ne-li všechny).

Nette: 0.9.2
PHP: 5.2.5

S pozdravem
Bernard

Editoval Bernard Williams (6. 4. 2010 18:43)

norbe
Backer | 405
+
0
-

Ono nejde jen o rychlost nahrátí na server, ale i o rychlost samotného načtení nette. Otevírání spousty souborů dost zdržuje…

Honza Kuchař
Člen | 1662
+
0
-

Ano, minified verze zabírá opravdu hodně paměti, ale díky tomu, že je to jeden soubor, tak PHPko (nebo cache zkompilovaného skriptu) načítá pouze jeden soubor a to je o hodně rychlejší než načítat souborů stovky. Opravdu, změř si to pomocí profileru, pomocí Debug::timer() nebo pomocí echo microtime(true);

Jan Tvrdík
Nette guru | 2595
+
0
-

Obecně platí, že diskové operace trvají poměrně dlouho (když jsem si teď spustil profiler Nette aplikace bez minified verze na localhostu [bez akcelerátorů], tak LimitedScope::load() stojí více než 30 % času) o jejich počet by se měl omezit pokud možno na minimum.

V praxi jsou navíc aplikace rozsáhlejší, takže procentuální nárůst spotřebované paměti při použití minified verze není vzhledem k paměťovým nárokům samotné aplikace tak velký.

Erik Ferčák
Člen | 10
+
0
-

Kolega previedol prednedávanom testy normálnej verzie a minified verzie. Použil kód z existujúceho projektu, nie je to žiaden skeleton a pod. Tu sú výsledky:

100 requestov (concurency 2.)

Minimalizovane.NETTE:
--------------------------------------------------------------------------------
eAccelerator, ROUND I.: Time taken for tests:   7.551 seconds
eAccelerator, ROUND II.: Time taken for tests:   7.521 seconds


bez, ROUND I.: Time taken for tests:   13.605 seconds
bez, ROUND II.: Time taken for tests:   13.617 seconds


Full.NETTE:
--------------------------------------------------------------------------------
eAccelerator, ROUND I.: Time taken for tests:   7.781 seconds
eAccelerator, ROUND II.:Time taken for tests:   7.778 seconds

bez, ROUND I.: Time taken for tests:   13.894 seconds
bez, ROUND II.: Time taken for tests:   13.925 seconds
despiq
Člen | 320
+
0
-

a proc ne s Xcache?

Bernard Williams
Člen | 207
+
0
-

Erik Ferčák napsal(a):

Kolega previedol prednedávanom testy normálnej verzie a minified verzie. Použil kód z existujúceho projektu, nie je to žiaden skeleton a pod. Tu sú výsledky:

Hodnoty využité paměti by nebyly? Docela by mě zajímaly..

Erik Ferčák
Člen | 10
+
0
-

Bernard Williams napsal(a):

Erik Ferčák napsal(a):

Kolega previedol prednedávanom testy normálnej verzie a minified verzie. Použil kód z existujúceho projektu, nie je to žiaden skeleton a pod. Tu sú výsledky:

Hodnoty využité paměti by nebyly? Docela by mě zajímaly..

Výsledky využitia pamäte nemeral. Skúsim ho k tomu dokopať;)

kravčo
Člen | 721
+
0
-

Bernard Williams napsal(a):

Nazdárek,

provádím zrovna nějaké srovnání Frameworků a knihoven. Když přišlo na měření využité paměti, tak jsem se v případě Nette dost zhrozil. Hodnota využité paměti byla cca 6,7 MB!! Číslo se mi vůbec nelíbilo a tak jsem si řekl, že je možná špatně napsaný testovací script. Využitou paměť jsem tedy změřil na holém skeletonu z distribuce. Číslo nebylo o moc uspokojující: 5,5 MB! Pak mě napadlo, že velkou roli na tom bude mít asi minified verze. Paměť jsem tedy zase změřil jak v mé aplikaci, tak i ve skeletonu, ale nyní už bez minified verze a výsledek:

Můj script: 2,6 MB
Skeleton: 3,1 MB

Nebude to tým, že v prípade minified verzie sa načíta zakaždým celé Nette a v prípade komplet verzie vždy len časť, ktorá je potrebná? Minified teda načíta vždy 100% Nette čiže je pamäťovým stropom?

srigi
Nette Blogger | 558
+
0
-

kravčo napsal(a):

Nebude to tým, že v prípade minified verzie sa načíta zakaždým celé Nette a v prípade komplet verzie vždy len časť, ktorá je potrebná? Minified teda načíta vždy 100% Nette čiže je pamäťovým stropom?

Je to presne preto.

Bernard Williams
Člen | 207
+
0
-

kravčo napsal(a):

Nebude to tým, že v prípade minified verzie sa načíta zakaždým celé Nette a v prípade komplet verzie vždy len časť, ktorá je potrebná? Minified teda načíta vždy 100% Nette čiže je pamäťovým stropom?

Tady to ani nikdo nevyvracel. Mě jen udivilo, že je ta minified verze upřednostňovaná před normální, i když má o tolik větší paměťové nároky.. To rychlejší načítání mě tu chvílí nenapadlo..

srigi
Nette Blogger | 558
+
0
-

Bernard Williams napsal(a):

Tady to ani nikdo nevyvracel. Mě jen udivilo, že je ta minified verze upřednostňovaná před normální, i když má o tolik větší paměťové nároky.. To rychlejší načítání mě tu chvílí nenapadlo..

Najlepsie bude otestovat v ostrej prevadzke, co je pre aplikaciu lepsie – rychlejsie loadovanie frameworku ale vacsie naroky na pamat alebo naopak.

kravčo
Člen | 721
+
0
-

Bernard Williams napsal(a):

Tady to ani nikdo nevyvracel. Mě jen udivilo, že je ta minified verze upřednostňovaná před normální, i když má o tolik větší paměťové nároky.. To rychlejší načítání mě tu chvílí nenapadlo..

Z tvojho príspevku nebolo jasné, že si s týmto uzrozumený.

Môj osobný názor je, že keď Nette žerie konštantných ~7MB s ~jednou diskovou operáciou alebo ~3MB s tridsiatimi diskovými operáciami a overheadom autoloadingu, tak mám jasnú voľbu. Hostingy dávno ponúkajú viac, než 8MB pre beh php skriptov…

pekelnik
Člen | 462
+
0
-

Pokud použiješ nějakou opcode cache není disková operace ani jedna a v tu chvíli je to podle mě úplně jedno :)

Je to ostatně vidět i na tom testu…

Hlavním úkolem minified verze není vyšší výkon (to ani nejde) ale snazší deployment (protože 1 soubor).

A ještě poznámka:

Paměťové nároky jsou tak jako tak na možném minimu díky inteligentnímu autoloadingu v Nette.

Editoval pekelnik (9. 4. 2010 12:57)

wdolek
Člen | 331
+
0
-

jak je to s pouzitim treba eAcceleratoru? kdyz pouziji minified verzi, predpokladam, ze se to cele interpretovane ulozi do cache. jak se ale eAccelerator chova v pripade neminifikovane (je to spravny vyraz?) verze? i kdyz by pak byly cachovany jednotlive interpretovane skripty – nebude zas zpomalovat to, ze eAccelerator bude muset v cache hledat jednotlive jiz interpretovane kusy aplikace?

a jeste me tak napadlo – jaky ma vliv na beh aplikace uvadeni/neuvadeni include a require v souborech? jsem lenivy clovek – spoleham na RobotLoader. neni to ale „chyba“ – vzhledem k dosazeni optimalniho behu aplikace? (v teto souvislosti – pokud bych se rozhodl v kazde tride pridat require na soubor s jinou tridou – musim includovat vzdy, kdyz je v prvni tride jen zminka o tride druhe, nebo jen az v pripade, ze skutecne vytvarim instanci nebo volam nejake staticke metody*)

*) mam na mysli

public function addFoo(Foo $foo)

vs

$foo = new Foo();

(podobne jako v .h souboru jsou jen hlavicky a az v .c jejich implementace)

bojovyletoun
Člen | 667
+
0
-

Taky přispěji výsledky:
Pozoruji rozdíl na minified verzi, když je vyhozena vyjímka( red screeen):
Dodám, že minified mám na php5.cz, a normal na lokálu. Debug zapnutý (jak jinak:))

vyvolaná vyjímka

  • Minifed: 800ms,14 MB
  • Normal:,300ms, 5MB

Normální běh

  • Minified 400MB, 7MB
  • Normal 500ms, 6MB

PS: jaký je rámcově spotřebovaný čas aplikací (ten v panelu). Myslím jednochá aplikace, mám jen 3 selecty z dibi sqlite.(samo o sobě 3ms) + 3 inputy a 2 submity +Vykreslení tabulky (pro přestavu PS: jaký je rámcově spotřebovaný čas aplikací (ten v panelu). Myslím jednochá aplikace, mám jen 3 selecty z dibi sqlite.(samo o sobě 3ms) + 3 inputy a 2 submity +Vykreslení tabulky (pro přestavu řádek osoba, sloupec=města . a buňka tabulky je buĎ true nebo false = byla osoba ve městě)+
nyní asi 30 osob a 6 měst+ ke každé bunce link na toggle)

tedy asoc pole osoba|mesta=bool

Edit: generování 180 linků nemá vliv…
Edit2 Měřeno na C2D 2Ghz.

PS: jde zrychlit načítání stránek při session->close()? prý souvislost s thread safe

Ještě dodám info o robotloader:
Vypnul jsem robot loader a ručně includoval asi 5 souborů (fomrMacros, dibi, 3 panely). A výsledky: žádný dramatický rozdíl

Editoval bojovyletoun (15. 11. 2010 1:35)