Proguard 或编译器会预先计算 TimeUnit.Minutes.toMillis(120)
Will Proguard or the Compiler Precalculate TimeUnit.Minutes.toMillis(120)
目前我有一个 class 具有以下 effectively constant 字段。
private static final long ACTIVITY_TIMEOUT_MS = 1 * 60 * 1000;
这很好,但仍然不是世界上最易读的代码。我宁愿使用以下内容:
private static final long ACTIVITY_TIMEOUT_MS = TimeUnit.MINUTES.toMillis(1);
这清楚地表明我希望时间为 1 分钟,但该字段是毫秒。
我的问题是编译器或 proguard 是否会修复此问题以便不会影响性能?如果性能受到影响,我可以预期它是 class 的每个实例的一次性命中吗?
是的,这将是 class 加载的一次性命中,而且它只是 class 加载的一小部分,甚至可能无法与加载class 第一名。
不,编译器无法理解,如果 ProGuard 可以,我会感到相当惊讶,但这真的没关系。
目前我有一个 class 具有以下 effectively constant 字段。
private static final long ACTIVITY_TIMEOUT_MS = 1 * 60 * 1000;
这很好,但仍然不是世界上最易读的代码。我宁愿使用以下内容:
private static final long ACTIVITY_TIMEOUT_MS = TimeUnit.MINUTES.toMillis(1);
这清楚地表明我希望时间为 1 分钟,但该字段是毫秒。
我的问题是编译器或 proguard 是否会修复此问题以便不会影响性能?如果性能受到影响,我可以预期它是 class 的每个实例的一次性命中吗?
是的,这将是 class 加载的一次性命中,而且它只是 class 加载的一小部分,甚至可能无法与加载class 第一名。
不,编译器无法理解,如果 ProGuard 可以,我会感到相当惊讶,但这真的没关系。