【发布时间】:2015-01-27 02:40:00
【问题描述】:
我正在对两种算法进行基准测试,以解决具有二维点的文件的 Skyline 查询问题。
我声明它们:
SkylineAlgorithm bnl = new BNL();
SkylineAlgorithm sfs = new SFS();
然后手动衡量他们的表现:
long startTime = System.nanoTime();
List<Point> skylinesBnl = bnl.getSkylinePoints(file);
long endTime = System.nanoTime();
long durationBnl = (endTime - startTime) / 1000000;
startTime = System.nanoTime();
List<Point> skylinesSfs = sfs.getSkylinePoints(file);
endTime = System.nanoTime();
long durationSfs = (endTime - startTime) / 1000000;
System.out.println("BNL: " + durationBnl + " ms");
System.out.println("SFS: " + durationSfs + " ms");
例如这将打印:
BNL: 4648 ms
SFS: 4946 ms
然后我想到了使用更复杂的东西,比如 NetBeans 分析器。我将根分析方法设置为getSkylinePoints(file)(两种算法通过模板方法设计模式共享该方法)然后在List<Point> skylinesBnl = bnl.getSkylinePoints(file); 行的末尾设置分析器以保存结果并输出它们。 sfs 也是如此。
我的结果是这些(在新标签中打开图片):
BNL:
SFS:
这与我通过手动方式获得的结果大不相同。有什么想法吗?
【问题讨论】:
标签: java performance netbeans profiling profiler