【发布时间】:2020-09-02 12:15:19
【问题描述】:
我问这个问题是因为考虑以下情况:
在我的 android 应用程序中,如果有 10 个项目,那么为了选择 3 个项目,我会检查当前范围。例如如果当前范围是 3 到 5(即第 3、第 4 和第 5 项),那么我想以不同方式处理小于 3 即 0 到 2 项和大于 3 项以及范围项目,即第 3 项、第 4 项和第 5 项不同。所以我可以通过两种方式做到这一点:
第一种方法)通过使用多个 for 循环,例如:
for(int i=0;i<3;i++)
{
//treat less than 3 items in this loop
}
for(int i=3;i<5;i++)
{
//treat range items i.e. 3rd, 4th and 5th items in this loop
}
for(int i=4;i<9;i++)
{
//treat greater than 3 items in this loop
}
第二种方法)通过在 for 循环中使用 if 语句,例如:
for(int i=0;i<9;i++)
{
if(i<3)
{
//treat less than 3 items
}
else if(i>3)
{
//treat greater than 3 items
}
else
{
//treat range items i.e. 3rd, 4th and 5th items
}
}
那么哪种方法对性能更好?使用多个 for 循环更好还是在一个 for 循环中使用 if 语句更好?如果我想增加条件怎么办?递增条件会影响性能吗?
编辑 1: 实际上这些项目是 RecyclerView 项目。如果项目不在范围内,那么我将回收它。还有一件事,每一个项目都包含 WebView 和一个协调器布局;实际上,我使用 RecyclerView 作为浏览器的选项卡管理器。它的一项代表一个浏览标签。
【问题讨论】:
-
性能差异几乎可以肯定是无关紧要的。选择你认为最容易阅读的那个。
-
我不确定实际上是否存在差异(编译器也可能优化代码),因此我不会打扰。很可能您不会遇到任何性能问题,如果您遇到问题,那么问题很可能在其他地方,您需要正确分析您的应用程序。您究竟为什么担心这里的性能?
-
我认为第一个更快,这样你就不用检查
i的范围是什么了 -
@Thomas 一般来说,java 编译器在源代码方面做了接近于零的优化。几乎所有的“魔法”都是由 JIT 在运行时发生的(我承认:我不知道 android “jvm” 在这里表现得如何“聪明”)。
-
请检查编辑 1。您对在这种情况下使用正确的方法有何看法?