代码片段1
public class UrlConfig {
private static Set<String> notFilter = new HashSet<String>();
static {
final String url1 = "/login/get_code";
final String url2 = "/login/check_code";
final String url3 = "/login/token/verify";
final String url4 = "/login/logout";
final String url5 = "/login/verify";
Set<String> set = new HashSet<>(Arrays.asList(url1, url2, url3, url4, url5));
notFilter = Collections.unmodifiableSet(set);
}
public static Set<String> getNotFilter() {
return notFilter;
}
}
代码片段2
public class UrlConfig {
private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
Arrays.asList("/login/logout",
"/login/get_code",
"/login/check_code",
"/login/token/verify",
"/login/verify")));
}
用到的地方:
boolean allowedPath = UrlConfig.getNotFilter().contains(path);
请问是片段1的效率好,还是片段2的效率好呢?
大佬指点
非热区的代码,怎么写效率都一样。
所谓热区,就是频繁调用,耗时很大的地方。
好比问坐火车,坐在前面的车厢是不是比后面的车厢是否先到达目的地。
效率不相上下,都差不多
效率是基本一致,第一段代码浪费了一点内存
改成
private static final Set<String> notFilter;
这个new浪费了
这样改后2段代码编译后其实是一样的(还拿火车举例,不是车头车尾,而是相邻的座位,没什么区别),只是代码写的看着区别很大的样子