【发布时间】:2017-01-07 05:43:33
【问题描述】:
我要求从属性文件中读取数据,该文件是命令分隔的,显然是字符串形式。所以在那之后我把它分成字符串数组。
我需要将该字符串数组转换为整数列表。
我尝试了两种方法:
- 每个循环都采用传统的铸造方式,
- 使用 java 8 流。
然后我想我必须根据性能计算哪个时间好。所以我有一些粗略的数据。
代码:
public class PropertyLoadCSV {
private static Properties properties;
public static void main(String[] args) {
try {
properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("resources/csvfile.properties"));
String ids = properties.getProperty("ids");
String[] splitedIDs = ids.split(",");
long startTime = System.nanoTime();
convertUsingJava7(splitedIDs);
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println(duration);
long startTime1 = System.nanoTime();
convertUsingJava8(splitedIDs);
long endTime1 = System.nanoTime();
long duration1 = (endTime1 - startTime1);
System.out.println(duration1);
} catch (Exception e) {
e.printStackTrace();
}
}
static List<Integer> convertUsingJava7(String[] splited){
List<Integer> list = new ArrayList<>();
for(String s: splited){
list.add(Integer.valueOf(s));
}
return list;
}
static List<Integer> convertUsingJava8(String[] splited){
return Stream.of(splited).map(Integer::parseInt).collect(Collectors.toList());
}
}
在控制台中得到了一些意想不到的结果:
131601
254094088
Java 8 流转换和转换真的比传统方式慢吗?
我必须使用哪一个作为性能关注点?
Here's 的工作示例。
【问题讨论】:
标签: performance java-8 java-stream