Kdyby/Doctrine – Téměř dvojnásobné zpomalení sandboxu
- Jecma
- Člen | 9
Ahoj,
TL;DR
nasazení Doctriny o 100% zpomalí web
podrobnosti níže:
chtěl bych se zeptat, jestli jste si někdo nevšiml výrazného zpomalení webu po nasazení Kdyby/Doctrine. Snažil jsem se optimalizovat jeden web pro rychlost a přišel na to, že Doctrina mi poměrně výrazně zpomaluje web už při načtení a jednom jednoduchém dotazu (pak se web zpomaluje pouze dalšími dotazy).
Poměrně stejný rozdíl v rychlosti načtení stránky se mi projevuje jak na localhostu s php 5.6, tak na webhostingu s php 7.0.10.
Stáhnu čistý web-project + kdyby/doctrine:
composer create-project nette/web-project test
composer require kdyby/doctrine
Všechno ponastavuji podle dokumentace:
extensions:
# add theese four lines
console: Kdyby\Console\DI\ConsoleExtension
events: Kdyby\Events\DI\EventsExtension
annotations: Kdyby\Annotations\DI\AnnotationsExtension
doctrine: Kdyby\Doctrine\DI\OrmExtension
doctrine:
user: root
password: root
dbname: test
metadata:
App: %appDir%
database:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: root
Tak a teď k rychlostem:
- test s Nette/Database:
class HomepagePresenter extends Nette\Application\UI\Presenter
{
/**
* @var Nette\Database\Context @inject
*/
public $database;
public function actionDefault()
{
$this->database->query('select * from article');
}
}
**Proběhne za cca 110 ms (testováno pomocí ApacheBench „ab.exe -n 100
http://test.cz.l/“
**
- test s doctrinou
class HomepagePresenter extends Nette\Application\UI\Presenter
{
/**
* @var EntityManager @inject
*/
public $em;
public function actionDefault()
{
$this->em->getRepository(Article::class)->findAll();
}
}
**Proběhne průměrně za 220ms (100requestů přes ApacheBench)
**
Dvojnásobná doba načtení stránky mi přijde trochu moc.
Tabulka article je prázdná a samotný dotaz zabírá jednotky ms. Development/production mode ukazuje stejný poměr poklesu rychlosti. Entita Article je přebraná z dokumentace a tabulka vytvořená pomocí orm:schem-tool:create. Ještě jsem si všimnul že s doctrinou web načítá 260 souborů s nette/database pouze 136.
Tak a teď kde je problém:
- někde mám něco špatně nastavené?
- pomalý HW? (localhost má SSD, na čem frčí webhosting netuším)
- Doctrina je prostě moloch?
Editoval Jecma (23. 11. 2016 22:22)