ПредишенСледващото

Нещо дълго време, тъй като ние не сме ангажирани в глупост.

Днес ние ще се извършват тестове с всички възможни нарушения на тяхната чистота и нагло манипулирани статистически данни.

Въпрос: как да се свържете на класовете в проекта си, като по този начин да спестите време на тяхната връзка.

  • Добрият стар автоматично зареждане (). като всички нормални хора.
  • За да се вземе и да събере всички класове в един файл, тъй като много учи.
  • Свържете класовете изрично по отношение на require_once ().
  • И ултрамодерен трик: Фар-архив.
  • Фар-архив все пак, можете да го направите, не е лесно, но с компресия (GZ или BZ2).
  • Ами phar'om също две възможности: автоматично зареждане () или директни приложения за връзка.
  • И отгоре на това, можете да удуша някои poshamanit.

инструменти

Инструменти за тестване тук: на githabe.

Работещи ./create.php създава тест директория. и в него следните неща.

каталог на класове

Структурата на нашите тестови класове. Всички стандартната PSR-0.

5 се създава пространства от имена с произволни имена. Всеки 5 създава произволни класове с произволен набор от методи.

И във всеки един от глобалното пространство се създава още 5 инвестира в тях все още на 5-те класове.

Общо 150 упражнения. Standard посредствен рамка.

full.php файл

Цялата "рамка" в един файл.

Размерът на файла се обърна 85 К. общ каталог на тегло (поради големия брой малки файлове) 725 K (файловата система ext4).

Няколко мачове вече са спасени.

exec.php файл

Това е изпълним скрипт, който извиква класовете.

За да се постигне някакво подобие на нормален сценарии: в един сценарий, не използвайте всички рамкови класове, но само 50 (една трета). Но всеки клас може да има няколко попадения.

Работа с всеки клас е проста: наричаме статичен метод, който изпълнява проста аритметика. По този начин, времето, прекарано работи с класовете не трябва да надвишава значително времето, прекарано на връзката им (което тестваме).

Фар архиви

От каталога на класове създадени три фарма-файл: фарма-none.phar. фарма-gz.phar. Фар-bz.phar (без компресия, GZ, BZ).

Размер на фармакологичната-node.phar. 99 К. Повече от full.php поради допълнителна информация.

Компресирани файлове: 51 K (GZ) и 61 К (BZ). Нормални на архиватори компресират по-добре.

(Удължаване Фар е необходимо и трябва да се нулира чрез създаване phar.readonly в php.ini)

req.php файлове и фарма-req.php

В req.php свърже всички файлове, използвани в exec.php (50 броя).

ФАР-req.php същото, само че те не се свързват от указателя и от фарма-файла.

След създаване на тестова тече от тестовете за конзола директория. /run.php [тест].

Аргумент [тест] може да бъде, както следва:

автоматично зареждане. свързване на файлове от една директория с помощта на автоматично зареждане.
Автоматично зареждане е проста: да замени NS1 \ NS2 \ Class на DIR / NS1 / NS2 / Class.php. проверява за файл и го отдава.

пълен. свързване на един голям файл.

REQ. свързване на необходимите файлове чрез require_once

фарма-авто. свързване на фармакологичната чрез автоматично зареждане.

фарма-REQ. свързване на необходимите файлове от ФАР чрез require_once.

фарма-GZ и фарма-BZ. връзка чрез автоматично зареждане на компресирани архиви.

Тъй като диск цикъл такива тестове безсмислен, а всъщност вече има тест за чистота и не мирише, просто се обадете на няколко пъти от конзолата (резултатите все още са винаги подобни).

резултати

Аз имам това (П. Dual Core 2,8Gts, Ubuntu, PHP 5.5.1):

Psevdoanalitika

Автоматично зареждане срещу сглобени в един файл

Не само, че събранието в един файл е консумирал 3 пъти повече памет (свързване на всички класове, когато имате нужда от само една трета), така че това е и времето, изгубено автоматично зареждане, който е предназначен за борба.

Други изследвания показват, че времето за монтаж се приближава, когато се свързвате автоматично зареждане около 50% от общия брой на класовете, а след това започва да го получи.

Автоматично зареждане срещу requre

изисква очаква пощаден автоматично зареждане.
Това е логично, тъй като с автоматично зареждане има много различни движения, които завършват с едни и същи изисква.

Въпреки това, разликата е само 10%.
И това въпреки факта, че на тест require_once за всеки клас се нарича само веднъж (в реален проект, ако се провери дали вече е свързан файла преди всеки клас първоначално свързване той се нуждае от един и същи клас ще бъде помолен многократно и require_once всеки път или не ).
В допълнение, нашите тестови малки файлове. На голям файл, връзка и анализ би взел много повече.

Това е темата на класовете за оптимизиране на търсенето: може да бъде отстранен от file_exists на автоматично зареждане (), можете да сканирате директории и събира картата класове в масив и да го използвате, вие все още може да направи много неща. Но всички тези оптимизации са само в рамките на 10%. Обикновено изрично изисква скорост не минава.

Фар доста весело.

А малко по-бавно и малко повече памет, което иска.
Но консумацията на опции памет до сглобяването на един файл, той веднага.
Въпреки, че тук също един файл.

Compression: софтуерна малко напред BZ2 тук (по-горе се оказа по-малък размер на файла).

Въпреки това, по време на компресия е значително намалена скорост на достъп.
И степента на сгъстяване, както се вижда по-горе, като нещо, което не е много (в действителност, на натиск нормално архиватор сгъстен резултат phar'a е по-голяма от компресията на некомпресиран).

Така че използването на сгъстен phar'y аз не бих препоръчал.
Въпреки че може да има някакъв opkesher ще разреши тази ситуация.

Zend Opcache

Е, това е желателно да се провери всичко това с цялото opkesherami, ускорители и други подобни.
Но ги сложи всички мързеливи, за да се провери само opcache.

Когато стартирате теста от конзолата не трябва да забравяме да включите в php.ini опция opcache.enable_cli.

Разрешаването opcahce доведе до удвояване на потреблението на памет, за да падне.

Що се отнася до точните цифри не трябва скорост, тъй като резултатите започнаха да се колебаят бясно, а нашите методи не позволяват те да бъдат осреднени голям брой тестове.

Въпреки това, от порядъка на около същите пропорции. Максимална: съответства на времето, без да opcahce, е минимална: два до три пъти по-малко.
При получаване на повикване от конзолата може понякога да надвишава значително време на повиквания през браузър.

1. Излишно е да пара поради нонсенс. Оптимизация все още е незначителен в сравнение с обичайното време на скрипта.

2. автоматично зареждане () - най-добрите и най-удобното решение. Особено след като на всички стандарти, като например PSR вече е обвързан с него.

3. За да се съберат множество файлове в едно, изграждането на училищни карти и т.н. Можете да prodakshene само при deploe.
Когато все повече и по-значително е оптимизирана.
При разработването на един и същ: много хемороиди, но малко помощ.

4. Изграждане на няколко файла в един дава резултат, само ако всеки път, когато се използва най-малко половината от прикачените файлове.

5. фарма - добър (за предоставените библиотеки, които не трябва да се променят).

6. сгъстен Фар - не е толкова добро.

7. Opcahce доста таксита.

Отказът на задълженията

Подкрепете проекта - споделете линка, благодаря!