发布版本比调试版本快得多
Release version much snappier than debug version
我刚刚将我的第一个 Android 应用程序发布到 alpha 版,我注意到从 Play 商店下载的发布版本比调试版本响应更快。
我认为这意味着 Android Studio 正在对发布版本进行一些优化,而它没有对调试版本进行优化。我的问题是,如果这是真的,这是否表明我应该追踪的代码效率低下?还是我应该将其视为发布的意外好处?
是的,当您在调试模式下编译时,编译器会留下一些有助于调试的东西。在发布模式下编译时,它会进行优化,这会减慢编译速度,但会使应用程序 运行 更快。
此外,如果您在发布版本中使用 ProGuard,它将优化代码以使其 运行 更快。
希望对您有所帮助!
你的应用程序的调试版本应该为此进行优化——即使这意味着添加额外的日志(来自系统或你的应用程序)、捕获错误的系统、数据跟踪和管理,以及你可以访问的一切从调试菜单,等等。
但是,当发布 apk 时,它不需要所有这些功能(这使您制作应用程序的生活更轻松)。此外,编译器可以对应用程序进行与速度相关的优化,这会阻止您正常调试。因此,它往往是 faster/more 响应式的 - 尽管不同程度的改进取决于您的应用实际在做什么。
关于您的代码效率低下,在不了解您的情况的情况下,我只能说 "it depends." 请注意,这 并不一定意味着您的代码效率低下 - 我只是不能肯定地说您的代码本身是否低效。
顺便说一句,这是正常的做法——调试时,为了调试而编写了一个不太优化的程序。如果您曾经处理过 C++ 和 g++ 编译器,这就像使用 -g 标志来调试 gdb 而使用 -O3 标志来制作更快、更小的程序。
我刚刚将我的第一个 Android 应用程序发布到 alpha 版,我注意到从 Play 商店下载的发布版本比调试版本响应更快。
我认为这意味着 Android Studio 正在对发布版本进行一些优化,而它没有对调试版本进行优化。我的问题是,如果这是真的,这是否表明我应该追踪的代码效率低下?还是我应该将其视为发布的意外好处?
是的,当您在调试模式下编译时,编译器会留下一些有助于调试的东西。在发布模式下编译时,它会进行优化,这会减慢编译速度,但会使应用程序 运行 更快。
此外,如果您在发布版本中使用 ProGuard,它将优化代码以使其 运行 更快。
希望对您有所帮助!
你的应用程序的调试版本应该为此进行优化——即使这意味着添加额外的日志(来自系统或你的应用程序)、捕获错误的系统、数据跟踪和管理,以及你可以访问的一切从调试菜单,等等。
但是,当发布 apk 时,它不需要所有这些功能(这使您制作应用程序的生活更轻松)。此外,编译器可以对应用程序进行与速度相关的优化,这会阻止您正常调试。因此,它往往是 faster/more 响应式的 - 尽管不同程度的改进取决于您的应用实际在做什么。
关于您的代码效率低下,在不了解您的情况的情况下,我只能说 "it depends." 请注意,这 并不一定意味着您的代码效率低下 - 我只是不能肯定地说您的代码本身是否低效。
顺便说一句,这是正常的做法——调试时,为了调试而编写了一个不太优化的程序。如果您曾经处理过 C++ 和 g++ 编译器,这就像使用 -g 标志来调试 gdb 而使用 -O3 标志来制作更快、更小的程序。