我有以下代码,我想在时间和内存使用方面衡量它的性能:
public static void main(String[] args) throws IOException {
final String bigFile = "large-file.txt";
if (args.length == 1) {
List<String> lines = Utils.readLinesFromFile(bigFile);
Path path = Paths.get(bigFile);
if (Files.exists(path)) {
lines = Files.readAllLines(Paths.get(bigFile), StandardCharsets.UTF_8);
}
List<String> filteredLines = lines.stream().filter(x -> x.startsWith(args[0])).collect(Collectors.toList());
for (String s: filteredLines) {
System.out.println(s);
}
} else {
System.out.println(String.format("Expected one argument"));
}
}
其中large-file.txt
是一个包含2,000,000行的文件。
我真的不知道如何衡量表现。我是否应该使用分析器(我可以使用分析器,因为程序运行时很短吗?),或者在整个代码中使用System.nanoTime()
并且多次运行程序以获得某种平均值是否足够?性能?但这在内存使用方面没有帮助 - 除非我可以在将大文件加载到内存之前和之后使用Runtime.totalMemory()
调用进行测量。
答案 0 :(得分:1)
您可以使用番石榴秒表来衡量执行时间
exec($runCMD."2>&1 1>/dev/null ",$out);