学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:286945438 我们一起学Java!
最初目的
在学习Java的集合类时,有时候想要测试代码块的运行时间,以比较不同算法数据结构之间的性能差异。最简单的做法是在代码块的前后记录时间戳,最后相减得到该代码块的运行时间。
下面是Java中的示例:
public static void main(String[] args){
long start = System.currentTimeMillis();
algo(); // 执行代码块
long end = System.currentTimeMillis();
System.out.println(end - start);
}
当需要同时打印多个方法的运行时间以进行比较的时候就会变成这样:
public static void main(String[] args){
long start = System.currentTimeMillis();
algo1(); // 算法1
long end = System.currentTimeMillis();
System.out.println(end - start);
long start = System.currentTimeMillis();
algo2(); // 算法2
long end = System.currentTimeMillis();
System.out.println(end - start);
long start = System.currentTimeMillis();
algo3(); // 算法3
long end = System.currentTimeMillis();
System.out.println(end - start);
// more
}
初探
显然上面的代码看起来非常冗余,由于Java不支持 func(func) 这样的直接传递函数指针,本人又不想引入JDK以外太重的工具,所以尝试写一个回调来实现代码块的传递:
public interface Callback {
void execute();
}
public class TimerUtil {
public void getTime(Callback callback) {
long start = System.curr