zoukankan      html  css  js  c++  java
  • if语句写在while语句外面效率更高

    为了排除某些特殊的文件后缀名,一开始我自然而然的这样写,判断每一个文件的后缀名:

        // 去除后缀名
        foreach (const QString &strKey, local_map.keys()) {    // strKey是本地全路径文件名,带冒号
            if (m_MapExts.count()>0) { // 这样速度快
                QFileInfo file_info(strKey); 
                if (m_exclude) {
                    if (m_MapExts.contains(file_info.suffix())) continue; // 排除法:跳过不要的文件
                } else {
                    if (!m_MapExts.contains(file_info.suffix())) continue; // 包括法:只要里面包含的文件
                }
            }
        }

    转眼一想,这样效率很低。因为排除某些文件后缀名的情况并不是很多,难道每次都要对每一个文件判断?当然是先判断有没有特殊文件后缀名要处理,然后再判断有没有这样的文件。于是改写成:

        // 去除后缀名
        if (m_MapExts.count()>0) { // 这样速度快
            foreach (const QString &strKey, local_map.keys()) {    // strKey是本地全路径文件名,带冒号
                QFileInfo file_info(strKey); 
                if (m_exclude) {
                    if (m_MapExts.contains(file_info.suffix())) continue; // 排除法:跳过不要的文件
                } else {
                    if (!m_MapExts.contains(file_info.suffix())) continue; // 包括法:只要里面包含的文件
                }
            }
        }

    感叹一下,一行之差,而且还是一个字都不变,效率差之千里!以后这种错误可要小心才是啊。

  • 相关阅读:
    JPG bufffer转Mat
    cv:Mat MFC上显示 BitMatToWnd
    opencv 版本修改
    2个多边形的关系判断和相交面积计算
    截取图像 opencv
    SQL Server 存储过程的分页方案比拼
    XP系统下数据库文件夹的权限设置
    关于23种设计模式的有趣见解
    一些编程的好习惯
    sql server 2000的数据库还原
  • 原文地址:https://www.cnblogs.com/findumars/p/4319586.html
Copyright © 2011-2022 走看看