0

我想知道我的代码小片段使用 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 负载、执行时间等)。

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

4

2 回答 2

1

借助Android Studio 中内置的 Profiler,您可以轻松查看在选定时间范围内调用了哪些线程上的哪些方法。我个人建议使用火焰图来查看哪些操作需要最多的时间。

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

于 2020-11-04T07:51:31.083 回答
1

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

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

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

于 2020-11-05T15:23:09.373 回答