【问题标题】:Compiler optimization to reduce bytes of executable code编译器优化以减少可执行代码的字节数
【发布时间】:2013-08-03 03:22:32
【问题描述】:

编译器(例如 javac)是否可以在编译之前扫描整个项目的未使用的方法和变量,然后在没有那些未使用的方法和变量的情况下编译项目 strong> 这样您最终会得到更少字节的可执行代码。

如果这将是一个编译器优化,我会创建一个包含所有辅助方法的大型库,并将其导入我的所有项目中,而不必担心它太大会影响我的软件大小。

我知道这可能是不可能的,如果你没有你正在使用(导入)的那些库的源代码,但我说的是你有源代码的情况。

是否有类似的工具/IDE 插件?我认为这也可以在编译前一步完成。

【问题讨论】:

    标签: plugins compiler-construction compilation compiler-optimization


    【解决方案1】:

    Java 的编译器本身并不执行此操作,但您可以使用 ProGuard 之类的工具或任意数量的其他 Java 优化器来删除未使用的代码。

    但是,在您的情况下,您为什么不只编译一次大型软件库并将其放在您的类路径中呢?这样你就不必复制它了。

    【讨论】:

    • 如果我使用普通的 java 编译器编译我的大型软件库,我会编译该库中的每一个方法,尽管我只使用了很少的..
    • ProGuard 似乎完全符合我的要求。为什么 Java 编译器不原生地这样做,这似乎是一个很好的优化,在所有情况下都会产生更小的字节码?
    • .jar 文件可能不仅仅用于您的程序。 .jars 可以链接到任何程序,因此“死”代码可能不会在另一个模块中死。
    • 我明白这一点。我的意思是对于您的模块,当您只需要其中一种方法时,为什么还要编译整个 jar!将同一个 jar 链接到他们的项目的其他模块可能正在使用这个 jar 中的两个方法,因此只编译这个 .jar 中的两个方法(不影响 .jar 本身)
    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多