if语句写在外面效率更高

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

    // 去除后缀名
    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; // 包括法:只要里面包含的文件
            }
        }
    }

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

时间: 2024-10-17 07:54:00

if语句写在外面效率更高的相关文章

Java新手学习路线,0基础学习Java怎样效率更高?

Java是老牌编程语言,拥有扎实的群众基础和广阔的市场应用,从业人员薪资也普遍较高.很多人想要加入到Java开发行列,不过0基础学习Java怎样效率更高? 很多0基础学习Java的同学想知道怎样学习效率更高?小编以为,学习Java需要一个系统的过程,而根据你未来的职位方向不同,学习也各有侧重.目前来说,Java就业方向包括Web开发.大数据开发.Android开发以及各种后端服务开发领域,但不论你选择哪一个,都要从最基础的知识点学习. Java基础知识点多且杂,初学者在开始的时候需要认识什么是J

.NET快速信息化系统开发框架 V3.2->WinForm版本新增新的角色授权管理界面效率更高、更规范

角色授权管理模块主要是对角色的相应权限进行集中设置.在角色权限管理模块中,管理员可以添加或移除指定角色所包含的用户.可以分配或授予指定角色的模块(菜单)的访问权限.可以收回或分配指定角色的操作(功能)权限.可以对所有角色.用户.模块(菜单).操作(功能)权限进行集中批量设置,角色户授权范围的设置(类似于用户授权范围的设置),表字段权限的设置以及表约束条件权限的设置等. 在角色授权管理模块可以对指定角色进行相应权限的分配与收回,添加与移除角色所拥有的用户,对角色所拥有的操作功能.模块访问权限等进行

浅析PHP的静态成员函数效率更高原因所在

php类的静态成员函数效率比类的普通成员函数的要高. 例子: <?php // php静态方法测试 header('Content-Type: text/html; charset=utf-8'); class xclass{ public static $var1 = '1111111111111111'; public $var2 = 'aaaaaaaaaaaaa'; public function __construct() { $this -> var2 = 'bbbbbbbbbbbb

一种效率更高的for循环

var i,array=[]; for(i=array.length;i--;) { //处理代码 } 1.for循环中使用更少的变量 2.逐步减至0,这样会更快,因为同0比较比同数组的长度比较,或同非0数组比较更有效率. 一种效率更高的for循环

Spring AOP中的JDK和CGLib动态代理哪个效率更高?

一.背景 今天有小伙伴面试的时候被问到:Spring AOP中JDK 和 CGLib动态代理哪个效率更高? 二.基本概念 首先,我们知道Spring AOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式. 自Java 1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方. JDK动态代理主要涉及java.lang.reflect包下边的两个类:Proxy和InvocationHandler.其中,Invoc

Python实用技巧:比普通的赋值方式效率更高的二元赋值

python支持类似于a += 3这种二元表达式.比如: 1 a += 3 -> a = a + 3 2 a -= 3 -> a = a - 3 3 a *= 3 -> a = a * 3 4 ... 在python中的某些情况下,这种二元赋值表达式可能比普通的赋值方式效率更高些.原因有二: 二元赋值表达式中,a可能会是一个表达式,它只需计算评估一次,而a = a + 3中,a要计算两次. 对于可变对象,可以直接在原处修改得到修改后的值,而普通的一元赋值表达式必须在内存中新创建一个修改后

ConcurrentHashMap多线程下比HashTable效率更高

HashTable使用一把锁处理并发问题,当有多个线程访问时,需要多个线程竞争一把锁,导致阻塞 ConcurrentHashMap则使用分段,相当于把一个HashMap分成多个,然后每个部分分配一把锁,这样就可以支持多线程访问 术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值.  哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地

if else和switch case那个效率更高一点

switch...case写法: switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; } if...else写法: if(boolean){ }else if(boolean){ }else if(boolean){ }else{ } 由此看来,switch有点以空间换时间的意思,而事实上也的确如此.1.当分支较多时,当时用switch的效率是很高的.因为switch是随机访问的,就是确

WM_PAINT消息在窗口重绘的时候产生,那什么时候窗口会重绘(异步工作方式,效率更高,灵活性更强)

Q:wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘?? A: 严格地说,只有当收到WM_PAINT消息后窗口会重绘 但是引起这个消息的事件有很多, 比如: 首次创建 移动 改变大小 showwindow/ activate window/ invalidate window .... 系统为什么不在调用Invalidate时发送WM_PAINT消息呢?又为什么非要等应用消息队列为空时才发送WM_PAINT消息呢?这是因为系统把在窗口中的绘制操作当作一种低优先级的操作,于是尽可能地