【问题标题】:how to know the performance of part of code using android studio如何使用android studio了解部分代码的性能
【发布时间】:2020-11-04 07:21:37
【问题描述】:

我想知道我的代码小片段使用 android studio 的性能。 我在这里写了一小部分代码来解释我的问题

params.rightMargin = (int) (getResources().getDimensionPixelOffset(R.dimen.rightAndLeftMargin));
params.leftMargin = (int) (getResources().getDimensionPixelOffset(R.dimen.rightAndLeftMargin));

或者,这些行也可以写成:

int margin = getResources().getDimensionPixelOffset(R.dimen.rightAndLeftMargin);
params.rightMargin = margin;
params.leftMargin = margin;

那么在 android studio IDE 的帮助下,如何比较这两个代码的性能(如内存使用、CPU 负载、执行时间等)。

注意:这不是我有几十个相同案例的唯一案例,因此我希望为所有类型的代码提供通用解决方案。

【问题讨论】:

    标签: java android performance android-studio android-ide


    【解决方案1】:

    使用Profiler built-in into Android Studio,您可以轻松查看在选定时间范围内调用了哪些线程的哪些方法。我个人建议使用火焰图来查看哪些操作花费的时间最多。

    请记住,将分析器附加到应用程序的进程会显着减慢它,因此,如果某些方法调用被占用,例如1 秒,实际上会少很多。

    【讨论】:

      【解决方案2】:

      我根本不了解安卓。但是在编写代码时,如果要进行计算,最好只进行一次,然后重用结果。在您的示例中,后者更好。

      我假设资源已经在进程的内存中,所以这里的足迹可能很小。它将在堆栈中为getReaources 创建一个新方法,为getDimensionPixelOffset 创建另一个方法。创建一个局部变量要便宜得多。

      如果您进行 IO 操作(例如访问文件或 http 操作),占用空间会显着增加。在这些情况下,最好声明一个局部变量并重用它。

      【讨论】: