pondělí 22. října 2007

Tanečky kolem rychlosti Springu

Lukáš Křečan sice neumí moc psát bulvární titulky, nicméně o to lépe mu jde psaní seriozního obsahu. V článku Je Spring pomalý? odhaluje jádro pudla.

Spring jenom věci spojuje a veškerou práci na někoho deleguje. Napadají mě jenom dvě oblasti, kde by teoreticky mohl Spring někoho zpomalovat. První je start aplikace, kdy startuje aplikační kontext, vytvářejí se proxy a injektují se závislosti. Z mých zkušeností start aplikačního kontextu probíhá velmi rychle i u rozsáhlých projektů (jenom kdyby nezdržoval ten Hibernate). Další oblastí, kde by teoreticky mohl Spring běh aplikace zpomalit je AOP. Ale i to z velké části deleguje na JRE nebo CGLIB. Skoro všechno ostatní neřeší Spring, ale jiné produkty (Hibernate, aplikační server, JDBC, Quartz, …). Takže zopakujme si to znovu. Spring nic nedělá, jenom nám spojuje kousky skládačky dohromady. Pokud je ta skládačka pomalá, nemůže za to lepidlo, můžou za to ty kousky samotné.

Lukáš má samozřejmě pravdu, ale o tom jsem nechtěl psát. Chtěl jsem se s vámi podělit o to, že se najdou extrémisté, kteří jsou schopni měřit rychlost toho lepidla. William Louth napsal článek Benchmark Analysis: Guice vs Spring, ve kterém je srovnání rychlosti IoC kontejneru Spring a Google Guice. O přínosu naměřených dat a potažmo celého benchmarku by se dalo spekulovat. Můj osobní nazor je ten, že celý benchmark nemá žádný význam pro praktické nasazení.