本文首先设计了一个简单的测时工具类进行函数耗时计算,然后利用spring AOP测试函数性能,最后分析了系统的耗时函数。
测试准备
测时方法1-工具类-代码入侵:
写了一个简单测试函数耗时的工具类(以后用spring aop代替)
public class ProfileUtils {
private static Map<String, Long> tempTime = new HashMap<>();
private static Map<String, Long> avgTime = new TreeMap<>();
public static void start(String tag) {
tempTime.put(tag, System.nanoTime());
}
public static void end(String tag) {
Long preTime = tempTime.get(tag);
Long avgpre = avgTime.get(tag);
if (preTime == null) return;
long cuTime = System.nanoTime() - preTime;
if (avgpre != null && avgpre != 0) {
avgpre = (avgpre + cuTime) / 2;
} else {
avgpre = cuTime;
}
avgTime.put(tag, avgpre);
}
public static void print() {
Set<String> keys = avgTime.keySet();
for (String key : keys) {
Long rs = avgTime.get(key);
System.out.println(key + "-avg: " + rs / 1000000 + "ms");
}
}
}
缺点:使用比较麻烦,需要注意前后名称对应,且需要显示入侵代码。
解决方案:SpringAOP
性能评测方法2:spring AOP
spring文件配置中加入一行(基于注解的aop配置)如下:
<aop:aspectj-autoproxy/>
配置aspect类与切入点:
/**
* Created by caiqingliang on 2016/8/7.