自己做完代码优化发现系统反而变慢了,证明有未知的因素没有考虑进去。
同一段代码,放在外面和封装在一个方法里面,代码执行速度从8200ms剧增到27816ms,代码如下:
for (ReportMidDataDto field : repDtos) {
if(!DateUtils.isBetween(DateUtils.getBeginTime(month),
DateUtils.getFinishTime(month), field.getStartTime())) continue;
if(asDto.getAsWho().equals("unit") && asDto.getAsId().equals(field.getUnitId())) {
downHours += (field.getEndTime().getTime() - field.getStartTime().getTime());
} else if(asDto.getAsWho().equals("line") && asDto.getAsId().equals(field.getEquipmentId())) {
downHours += (field.getEndTime().getTime() - field.getStartTime().getTime());
} else if(asDto.getAsWho().equals("stat") && asDto.getAsId().equals(field.getStationId())) {
downHours += (field.getEndTime().getTime() - field.getStartTime().getTime());
}
}
这两天开始排查,排查完毕后给出自己的结论。