zoukankan      html  css  js  c++  java
  • python 中x%2 x&1 判断偶数奇数 性能对比

    本文使用非常好用的python交互解释器ipython操作演示,
    使用命令pip install ipython安装,输入ipython即可。比python自带的好用。

    python中有两种方法判断一个数是不是偶数或者奇数:

    In [29]: 3&1
    Out[29]: 1
    
    In [30]: 3%2
    Out[30]: 1
    
    In [31]: 4&1
    Out[31]: 0
    
    In [32]: 4%2
    Out[32]: 0
    

    性能肯定是&1更高嘛,实际当中感觉差不多,简单写两个函数测试一下

    二进制与操作&1判断偶奇数:
    
    def testand(x):
        for r in range(1,x):
            if r&1:
                pass
    
    
    %2求余判断偶奇数:
    
    def testmod(x):
        for r in range(1,x):
            if r%2:
                pass
    
    

    用ipython自带的timeit功能测试:

    In [19]: %timeit testmod(100000)
    100 loops, best of 3: 12.9 ms per loop
    
    In [20]: %timeit testand(100000)
    100 loops, best of 3: 10.8 ms per loop
    
    In [21]: %timeit testand(1000000)
    10 loops, best of 3: 109 ms per loop
    
    In [22]: %timeit testmod(1000000)
    10 loops, best of 3: 129 ms per loop
    

    对我来说,感觉差距不大。

    In [162]: %timeit testand(999999)
    10 loops, best of 3: 109 ms per loop
    
    In [163]: %timeit testand(9999999)
    1 loop, best of 3: 1.08 s per loop
    
    In [164]: %timeit testand(99999999)
    1 loop, best of 3: 10.9 s per loop
    
    In [165]: %timeit testmod(9999999)
    1 loop, best of 3: 1.3 s per loop
    
    In [166]: %timeit testmod(99999999)
    1 loop, best of 3: 13 s per loop
    

    &1确实性能更好,加大了数据,不过差距也没有很明显放大。

    2016年10月9日 13:46:36 codegay

  • 相关阅读:
    volatile
    public && protected && private
    class && struct
    jQuery-实现全选与反选
    .NET Fframework
    C# 中的单精度与双精度区别
    C#中的集合(HashTable与Array类)
    c#中的数组、ArrayList、List区别
    C#属性和字段区别、get与set用法
    C#中委托和事件
  • 原文地址:https://www.cnblogs.com/gayhub/p/5941954.html
Copyright © 2011-2022 走看看