我有这个循环,运行大约1,000,000次。
while ((line = br.readLine()) != null) {
if(!(line.isEmpty())){
data = new JSONObject(line);
name = (String)data.get("name");
surname = (String)data.get("surname");
ar.put(name, surname); //an array
}
}
在数据方面的效率方面有什么优势(如果有的话),名称和姓氏是与在运行时创建新动态对象相比较的字段
while ((line = br.readLine()) != null) {
if(!(line.isEmpty())){
JSONObject data = new JSONObject(line);
String name = (String)data.get("name");
String surname = (String)data.get("surname");
ar.put(name, surname); //an array
}
}
答案 0 :(得分:4)
没有任何区别,因为您只更改了变量的范围。由于您没有使用范围之外的变量,因此生成的字节码也是相同的(您可以使用df = df.drop(df.columns[range(11,36)], axis=1)
进行尝试。)
因此,为清晰起见,请使用第二种风格。
编辑:事实上,如果您将变量作为类的字段,则字节码可能不同。性能将取决于JIT将如何结束它,但不太可能存在显着差异(即便如此,第二种方式更容易优化 - >可能更快)。
答案 1 :(得分:0)
第一种方法的执行速度应该更快,因为 对每个变量(数据,名称,姓氏)使用单个 引用每一个循环
第二种方法 为每个循环中的每个方法创建一个新的 引用。所以你最终创建了每个参与者的百万个参考文献!!
然而创建一个引用是一个恒定的时间操作,不应该打扰你。您应该专注于使您的代码可读和清洁。因此,由于最佳实践表明变量的范围尽可能小,所以如果我知道这种方法会运行多次,我只会采用第一种方法。 (我的意思是如果只运行一次,你可以再等几毫秒)
效果提示:由于您关注性能,并且假设您大致知道迭代次数,我建议您初始化{{1}的容量 }