是否有用于积极内联静态工厂方法的Java优化工具?

时间:2017-01-22 01:38:08

标签: java optimization inline

这个问题是关于打破堆栈跟踪和反射的字节码级内嵌优化。

我有一个包含许多静态工厂的库来创建对象。该类只有静态方法,如

public class FruitC {

public static Appple createApple(AppContext ac, AppleParameters...) {
  //stuff using AppContext to create apple use parameters
  return apple;
}

代码电话

FruitC.createApple(AppContext ac, AppleParameters...)

最初的想法是使用这样的设计以允许简单的内嵌,以便优化器可以完全删除静态类,因为在内联类之后,FruitC将是空的。

但是你不能覆盖静态方法,你需要将Context in参数传递给工厂方法,并且在编码时它看起来很丑陋

所以现在的想法是为每个静态工厂创建一个非静态类。 非静态类由Application上下文

初始化
public class FruitFactory { 

private AppContext ac;

public FruitFactory(AppContext ac) {
   this.ac = ac;
}
public Apple createApple(AppleParameters...) {
    return FruitC.createApple(ac, AppleParameters...)
}

此设计允许在需要时进行扩展。但是,默认工厂可以推测内联,并且在优化后完全删除了FruitFactory和FruitC类。

是否有一个可以删除FruitFactory和FruitC的优化工具?

智能优化器必须能够检测到AppContext是一个对象,其引用在应用程序生命期间写入ONCE,然后永远不会更改。

ProGuard能够做到吗?

此优化必须在java字节代码级别完成,因为必须将其发送到Android或其他平台。

0 个答案:

没有答案