通常,通过将变量,方法和类名重命名为更无意义的名称进行模糊处理不会影响性能.一些混淆软件供应商甚至声称除了混淆之外,还有30%的性能提升.虽然我从未测试过这些说法,但从未见过它们,因此很难相信它们.
但是,请记住,某些软件还支持流混淆:在语句中添加无意义的控制循环,因此代码更难以遵循.这确实会对性能产生负面影响,尽管很小.
不会。混淆只是将您合理命名的代码替换为不可读的代码。在某些情况下(例如,使用 ProGuard 时,我们的代码甚至可以通过删除所有无用的代码块(例如if(false)和 类似的语句)来“优化”。
编辑(澄清 Magesh 的想法)。
当使用混淆器(而不是手动混淆,这不是一个好主意)时,它将加载您的类并内联一些方法或代码块(如前面提到的 if)以简化代码以获得大的代码块。因此,方法调用更少,需要更少的堆栈使用,然后紧固应用程序。
混淆器通常会做的另一件事是将所有变量从mySmartVariable重命名为a$a$a,从而无法反编译(因为 java 反编译器将其视为$用于标识内部类和匿名类的符号,而不是变量)。