如何在启动时提高Guice的性能

时间:2011-01-20 14:38:29

标签: java performance guice

好的,我知道我的计算不客观等等,但无论如何,我讨厌在执行单元测试时等待这么多时间:

我的guice swing应用程序需要大约7秒才能初始化。这是一个简单的IRC客户端。那时,没有连接打开,我甚至还没有调用任何java.io或java.net类。我试图缩小究竟是什么错误,我得到了Guice使用的5.8秒(平均值),以便用我正在使用的2个模块创建注入器(一个普通模块和一个用{{1}构建的模块},安装在原始模块中。)

当我删除所有模块时(基本上只调用FactoryModuleBuilder),它仍然需要3.5秒。

我使用的Guice版本是3.0 rc2。我的电脑肯定不是最新的,但它仍然不超过3年。

那么如果可能的话,我如何才能提高Guice的表现呢?


作为参考,这是我正在使用的主要方法,导致3.5秒。后续调用需要0.01秒

Guice.createInjector()

结果

public static void main(String[] args) {

    long t = System.currentTimeMillis();
    Injector injector = Guice.createInjector();
    long t1 = System.currentTimeMillis();
    System.out.println(((t1 - t)) / 1000.0);
}

1 个答案:

答案 0 :(得分:4)

  • 你不应该在单元测试中使用Guice。如果您确实需要使用它,它们可能不是真正的单元测试(在隔离中进行测试),或者您没有正确使用Guice或两者都使用。
  • Guice绝对不应该花费任何时间来启动,除非你的代码中有些东西导致奇怪的东西。在我的机器上(使用3.0 rc2)创建Injector Guice.createInjector()并且没有模块需要花费100多分钟。