Csatlakozó a különböző osztályok Makár (php), az első blog

Valami hosszú idő óta nem vagyunk foglalkozó nonszensz.

Ma megyünk vizsgálatok elvégzésére minden lehetséges megsértését tisztaságukat és pimaszul manipulált statisztika.

Kérdés: hogyan kell csatlakoztatni az osztályok a projektben, hogy így időt takaríthat meg a kapcsolat.

  • A jó öreg autoload (). mint minden normális ember.
  • Hogy, és gyűjtsük össze az összes osztályt egyetlen fájlban, mivel sok tanítani.
  • Csatlakoztassa az osztályok kifejezetten szempontjából require_once ().
  • És újkeletű trükk: Pharm-archívum.
  • Phar-archív tartalom, amit tehetünk, nem könnyű, de a kompressziós (GZ vagy BZ2).
  • Nos phar'om is két lehetőség van: autoload () vagy közvetlen kapcsolat a mellékleteket.
  • És a tetején, hogy akkor fojtja néhány poshamanit.

műszerek

Eszközök tesztelésére van: a githabe.

Futó ./create.php létrehoz egy teszt könyvtárat. és ez a következő dolgokat.

katalógus osztályok

A szerkezet a mi vizsgálati osztályok. Minden standard PSR-0.

5 létrejön névterek véletlen nevekkel. Mindegyik 5 teremt véletlen osztályok egy véletlenszerű halmaza módszerekkel.

És mind a globális tér jön létre, további 5 beruházott még 5 osztálynak.

Összesen 150 osztályok. Normál középszerű keretet.

full.php fájl

Az egész „keret” egy fájlban.

Fájl mérete fordult 85 K. A közös katalógus súly (mivel a nagyszámú kis fájlok) 725 K (ext4 fájlrendszer).

Több mérkőzést már mentett.

exec.php fájl

Ez egy végrehajtható script, hogy hivatkozott az osztályokat.

Annak érdekében, hogy néhány látszatát egy normális forgatókönyv: az egyik esetben nem használható az összes keretet osztályba, de csak 50 (egyharmada). De minden osztálynak több találat.

Munka egyes osztályok egyszerű: hívja a statikus módszer, amely elvégzi az egyszerű számtani. Így a munkában töltött időt a osztályokat ne haladja meg jelentősen a töltött idő a kapcsolatot (amit tesztelünk).

Phar-archívum

A katalógus osztályok létrehozott három Pharm-file: Pharm-none.phar. Pharm-gz.phar. Phar-bz.phar (tömörítés nélkül, gz, bz).

Méret Pharm-node.phar. 99 K. Több mint full.php miatt további információkat.

Tömörített fájlok: 51 K (GZ) és 61 K (bz). Normál a archivers tömöríteni jobb.

(Pharm hosszabbítás szükséges törölni kell beállításával phar.readonly php.ini)

req.php fájlokat és Phar-req.php

A req.php csatlakoztassa az összes használt fájlok exec.php (50 db).

A Pharm-req.php ugyanaz, csak nem tartják össze a könyvtár és a Pharm-fájlt.

Miután létrehozott egy vizsgálat indul a konzol könyvtárat teszteket. /run.php [teszt].

Argument [teszt] a következők lehetnek:

autoload. kapcsolat fájlokat egy könyvtárba a AutoLoad.
AutoLoad egyszerű: cserélje az NS 1 \ NS2 \ Class DIR / NS1 / NS2 / Class.php. ellenőrzi fájlt, és csatolja azt.

teljes. kapcsolatot egy nagy fájlt.

req. csatlakoztatni a szükséges fájlokat keresztül require_once

Pharm-auto. csatlakoztatását Pharm keresztül AutoLoad.

Pharm-req. csatlakoztatni a szükséges fájlokat a Pharm keresztül require_once.

Pharm-gz és Pharm-bz. csatlakozás AutoLoad a tömörített állományok.

Mivel a vezetési ciklus ilyen vizsgálatok értelmetlen, sőt már van egy tisztasági vizsgálatok és nem szaga, csak hívja néhány alkalommal a konzol (az eredmények még mindig hasonló).

találatok

Megvan ez (P. Dual Core 2,8Gts, ubuntu, php 5.5.1)

Psevdoanalitika

AutoLoad vs össze egy fájlba

Nem csak a szerelvény egy fájlban fogyasztott 3-szor több memóriát (csatlakoztassa az összes osztály, amikor szükség van csupán egyharmadát), így ez is egy időben elveszett AutoLoad amelynek célja leküzdésére.

A további vizsgálatok azt mutatták, hogy a szerelési időt közeledik csatlakoztatásakor AutoLoad mintegy 50% -a az összes osztályok száma, és ezután kezd kapni.

AutoLoad vs requre

igényel várható megkímélte autoload.
Ez logikus, mert a AutoLoad sok különböző mozgások, amelyek végén az összes azonos igényel.

A különbség azonban csak 10%.
És ez annak ellenére, hogy a vizsgált require_once minden osztály neve csak egyszer (egy igazi projekt, ha be van jelölve, hogy az már csatlakoztatva a fájlt, mielőtt minden osztály kapcsolódnia volt szüksége egy és ugyanazon osztályba fogják kérni ismételten és require_once minden alkalommal, vagy sem ).
Ezen felül, a vizsgálat a kis fájlok. Egy nagy fájl, a kapcsolat és elemzés volna sokkal több.

Ez a téma a kereső optimalizálás osztályban el lehet távolítani a AutoLoad file_exists (), akkor beolvasni a könyvtárakat, és gyűjtsük térkép osztályok egy tömbben, és használja azt, akkor még mindig egy csomó dolgot. De mindezen optimalizáció csak a 10% -át. Egyszerű explicit igényel sebesség nem megy át.

Pharm elég könnyedén.

Egy kicsit lassabb és egy kicsit több memóriát akar.
De a fogyasztás memória lehetőség akár az összeállítás egy fájlban azt el.
Bár itt is, egyetlen fájlban.

Compression: gzip valamivel megelőzve BZ2 itt (fent kiderült kisebb fájlméret).

Azonban a tömörítés során jelentősen csökken hozzáférési sebességet.
És a tömörítési arány, mint láttuk, mint valami nem nagyon (sőt, a nyomó normál archiváló sűrített phar'a eredménye nagyobb, mint a tömörítés tömörítetlen).

Tehát sűrített phar'y én nem ajánlom.
Bár lehet, hogy néhány opkesher megoldaná ezt a helyzetet.

Zend Opcache

Nos, kívánatos, hogy teszteljék ezt minden opkesherami, gyorsítók és hasonlók.
De fel őket lusta, így ellenőrizni csak opcache.

Amikor futtatja a tesztet a konzol nem szabad elfelejteni, hogy tartalmazza a php.ini beállítás opcache.enable_cli.

Engedélyezése opcahce vezetett megduplázódása memória-felhasználás csökken.

Ami a pontos számok nem a sebesség, mint az eredmények kezdett ingadozik vadul, és a mi módszereink nem teszik lehetővé kell átlagolni a vizsgálatok nagy száma.

Azonban a körülbelül azonos arányban. Maximum: megfelel annak az időnek nélkül opcahce, minimális: 2-3-szor kevesebb.
Amikor egy hívást a konzol néha jelentősen meghaladják az időben hívásokat egy böngésző.

1. Szükségtelen gőz miatt képtelenség. Optimalizáció még mindig elenyésző a szokásos időben a forgatókönyvet.

2. autoload () - a legjobb és legkényelmesebb megoldás. Különösen azért, mert minden az előírásoknak, mint PSR most kötve vele.

3. Ahhoz, hogy összeállítsa több fájlt egy, az építési iskolai térképek, stb Egyszerre csak prodakshene meg deploe.
Amikor egyre jelentősebb lett optimalizálva.
A fejlődő ugyanaz: egy csomó aranyér, de kis segítséggel.

4. Építsd több fájlt egy olyan eredményt ad, csak akkor, ha minden egyes alkalommal használjuk, legalább a fele a csatolt fájlokat.

5. Pharm - jó (a mellékelt könyvtárak, amelyek nem kell változtatni).

6. A sűrített Pharm - nem olyan jó.

7. Opcahce elég taxik.

Denial of kötelezettségek