Pomale skladani DI kontejneru

Ja
Člen | 260
+
0
-

Zdravim,

mame pomerne velkou aplikaci a prvotni slozeni DI kontejneru (ve windows, linux je krapet rychlejsi) trva fakt strasne dlouho – 1–2 minuty. Pak uz aplikace bezi rychle a bez problemu. Mate to take podobne, pripadne da se s tim neco delat?

Predem diky moc

David Matějka
Moderator | 6445
+
0
-
  • co je pomerne velka aplikace? kolik cca sluzeb
  • co mate za verzi nette?
  • nemate nejake specialni extension – treba kdyby/aop?
CZechBoY
Člen | 3608
+
0
-

pro srovnání
Asi taky záleží na stroji a verzi php. Mně se třeba DIC generuje asi minutu na notebooku s windows a php5. Na tom stejném stroji s php7 to vygeneruje asi za 20–30s. Na serveru s php5 to dělá nějakých 10s. Služeb máme okolo tisícovky.

Ja
Člen | 260
+
0
-

@DavidMatějka : Sorry, ze jsem neposkytl vice info.

Nette 2.4., doctrine2

sluzeb cca do 400

specialni extension ne, kdyby/autowired, translation, ublaboo/datagrid, jedina vetsi extension je asi mpdf, ta by mohla asi delat bordel :-/

Tomáš Votruba
Moderator | 1114
+
0
-

@Ja Jaký efekt má odstranění mpdf?

Ja
Člen | 260
+
+1
-

@TomášVotruba zkusil jsem a prakticky zadna zmena, takze tam ten trouble nebude

cniry2
Člen | 6
+
0
-

Ahoj, také se snažím zrychlit sestavení DIC. Řešili jste někdo nějaké optimalizace v jeho sestavování?
Na projektu s 2000 službami nám trvá jeho sestavení 15s, což je taky dlouhá doba :)
Zkoušel jsem celý projekt hodit do ramdisku, ale neuspořil jsem tím při sestavování ani vteřinu.

Felix
Nette Core | 1186
+
0
-

cniry2 napsal(a):

Zkusil bych nejdrive Blackfire a mrknul co se vola nejcasti a kolik to zere MB.

Par DI otazek:

  • kolik je tam rozsireni [CompilerExtension] (vlastnich vs 3rd party)?
  • resi se tam nejaka auto-discovery? (prochazeni vsech trid a pripadna registrace)
  • jak moc je tam pouzito reflexe? (kvuli detekci neceho a pripadne registraci)
  • kolik sluzeb ma inject, autowired?
  • kolikrat se vola callInjects?

Par infra otazek:

  • jake PHP?
  • jaky memory limit?

Par osobnich doporuceni:

  • nastavit autowired false/self pro sluzby, ktere to nepotrebuji (typicky se injectuji nekam primo)
  • zredukovat pocet sluzeb co se injectuji na 1 misto (mohou se tam dosadit primo a nemusi to byt jako sluzba)