Statické metody nebo singletons výkon-moudrý (Android)?

hlasů
8

V aplikacích s malým počtem POJO a mnoho pomocných metod, které pracují na nich, co je lepší výkon-moudrý: učinit z pomocných tříd singletons nebo učinit metody statické?

Položena 27/02/2009 v 16:49
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
9

Statické metody by byly velmi mírně vyšší výkon a paměť moudrý:

  1. Vyhnout (potenciální) režii virtuální volání funkcí.
  2. Eliminuje paměti potřebné pro skutečné instance třídy.
  3. Odstraňuje nutnost získat instanci třídy, když ji použijete.

Ale upřímně bych asi pořád dělat to singletontak jako tak. Zisky byste získat tím, že dělá to je pravděpodobné, že tak malé, že by nulový rozdíl, a to i v mobilním prostředí.

Odpovězeno 27/02/2009 v 16:58
zdroj uživatelem

hlasů
6

Se můžete vyhnout buď situaci a zajistit jejich pravidelné kurzy?

Ignorování výkon otázku, tak bych doporučujeme vyhnout singeltons a statické metody, jak zlepšit své testovatelnosti.

Jednočetných a statické metody mohou být velmi těžké zkoušce; V tomto ohledu jedináčci jsou v podstatě statické metody, ale s jiným názvem. Misko Hevery , který pracuje v týmu testu Google , má několik dobrých článků na toto téma:

Odpovězeno 27/02/2009 v 17:13
zdroj uživatelem

hlasů
4

Nebojte se o absurdních mikro optimalizace, jako je to. Obávat udržovatelnost.

Zní to jako, že aplikace je napsána ve stylu zcela non-OO a mohla by bylo velkým přínosem odstranění většiny těchto „pomocných metod“ a dávat je tam, kam patří, s údaji, které fungují dál.

Odpovězeno 27/02/2009 v 17:14
zdroj uživatelem

hlasů
2

Užívání otázku na nominální hodnotu, bude statické volání pravděpodobně vyžadovat co nejmenší množství energie do procesoru. Důvodem je to, že běžné způsoby jsou dynamické vázány a vyžadují určitou vyhledávání za běhu, zatímco statické metody jsou vázány na kompilaci.

Mít říkal, že to asi nebude záležet na vaší žádosti. Rozdíl je opravdu malá. Pokud vaše aplikace dělá nějakou věc s GUI, xml rendering, připojení k internetu nebo k jinému externímu manipulace your'll zjistili, že tyto aktivity trpaslík jednoduché mathod vyhledávání obrovským faktorem.

Dokonce i když nemáte, během profilování jste s větší pravděpodobností narazit jeden úzký profil drží svou přihlášku a zjistit, že není způsob vyhledávání, ale některé logika jste sami sebe. Například můžete použít namísto ArrayList si HashSet a obsahuje metoda ukáže být drahé.

Tak jako výkon v těchto případech vůbec nevadí, bych doporučil používat implementace singletons nad statickými metodami, jako design je o něco pružnější. Ačkoli mimo volby vám nabídl bych drop pomocné třídy úplně a vložené metody ve svých POJO letech.

Odpovězeno 27/02/2009 v 17:13
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more