Prilisna slozitost FormContainer::setValues + ::getValues

- juzna.cz
 - Člen | 248
 
Studoval jsem tyto dve funkce docela dlouho, abych pochopil jak funguji (link) a ta implementace je docela drsna! Je nejaky duvod, proc je to takto slozite udelane? Proc to neni treba rekurzivne, treba takto ?
Rekurzivni verze mi prijde o mnoho srozumitelnejsi. Je tam neco, co nevidim? Nebo se jedna o nejakou vykonovou optimalizaci?

- Jan Tvrdík
 - Nette guru | 2595
 
Předpokládám, že se jednalo o výkonovou optimalizaci. Zkoušel jsi to změřit?

- juzna.cz
 - Člen | 248
 
Zkusil jsem udelat test case s obrovskym mnozstvim vnorenych formularu a prvku, kde jsem vychazel z tests/Forms/Forms.namingContainer.001.phpt.
Moje implementace: 12.5 sekundy
Originalni implementace: 13.0 sekundy
Tam tedy rozdil prakticky neni
Edit: muj test je zde
Editoval juzna.cz (19. 3. 2011 15:11)

- David Grudl
 - Nette Core | 8285
 
To je z historických důvodů, kdy místo
if ($control instanceof FormContainer) tam bylo
if ($control instanceof INamingContainer), tj. objekt, který
neměl setValues(). Tohle to už dnes neplatí, takže by šlo použít
rekurzivní volání.

- David Grudl
 - Nette Core | 8285
 
Říkám si, že podporu pro jiné kontainery bych asi vyhodil, tj. tyto řádky https://github.com/…4e2b07c17c68#…