性能:语句顺序影响性能

性能:语句顺序影响性能

假如现在有三个条件语句,其中有两个只是简单的逻辑判断,但是最后一个语句判读涉及SQL。三个语句若有任何有个不成立都立即返回,如何排序才能性能最佳?

  • 应该将涉及SQL的if语句放最后执行,因为如果前面不通过就返回了,不用在执行性能消耗最大的SQL。如果放在前面,倘若没问题据判断后面的简单逻辑,每次都要判断消耗性能。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//1.校验
if(StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {
return -1L;
}

if(userAccount.length()<4) return -1L;

if (userPassword.length()<8) return -1L;
//校验账户不能包含特殊字符,定义只能包含字母、数字和下划线的正则表达式。

String validPattern = "^[a-zA-Z0-9_]+$";
Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);
if (matcher.find()) {
return -1L; // 如果找到特殊字符,返回 -1L
}

//密码和确认密码不同
if (!checkPassword.equals(userPassword)) return -1L;

//账户不能重复(放在校验最后,减少性能浪费。)
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_account", userAccount);
long count = userMapper.selectCount(queryWrapper);
if(count>0) {
return -1L;
}

通过上面代码我们应当思考在日常开发中如何编写可以降低性能浪费,像这样的判断语句,我们应当把性能消耗最小的最先执行。