if语句写在while语句外⾯效率更⾼
为了排除某些特殊的⽂件后缀名,⼀开始我⾃然⽽然的这样写,判断每⼀个⽂件的后缀名:
// 去除后缀名
foreach (const QString &strKey, local_map.keys()) {    // strKey是本地全路径⽂件名,带冒号
if (unt()>0) { // 这样速度快
QFileInfo file_info(strKey);
if (m_exclude) {
if (ains(file_info.suffix())) continue; // 排除法:跳过不要的⽂件
} else {
if (!ains(file_info.suffix())) continue; // 包括法:只要⾥⾯包含的⽂件
}
}
}
转眼⼀想,这样效率很低。因为排除某些⽂件后缀名的情况并不是很多,难道每次都要对每⼀个⽂件判断?当然是先判断有没有特殊⽂件后缀名要处理,然后再判断有没有这样的⽂件。于是改写成:
// 去除后缀名
if (unt()>0) { // 这样速度快
foreach (const QString &strKey, local_map.keys()) {    // strKey是本地全路径⽂件名,带冒号
QFileInfo file_info(strKey);
if (m_exclude) {
if (ains(file_info.suffix())) continue; // 排除法:跳过不要的⽂件
} else {
if (!ains(file_info.suffix())) continue; // 包括法:只要⾥⾯包含的⽂件
}while语句都可以用for改写
}
}
感叹⼀下,⼀⾏之差,⽽且还是⼀个字都不变,效率差之千⾥!以后这种错误可要⼩⼼才是啊。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。