Odoo中文网|Odoo实施培训

标题: python list 的+、+=和extend操 [打印本页]

作者: 非一般的感觉    时间: 2015-9-14 20:19
标题: python list 的+、+=和extend操
                                                                        据说后者在list很大的时候性能稍好。
于是测试了一把:
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
27
28
29
30
import time

def time_cost(func):
    def _time_cost(*args,**kw):
        t1=time.time()
        func(*args,**kw)
        t2=time.time()
        return t2-t1
    return _time_cost

@time_cost
def test_add(list_a,huge_list_b):
    return list_a+huge_list_b
@time_cost
def test_extend(list_a,huge_list_b):
    return list_a.extend(huge_list_b)


if __name__=='__main__':
    print '-----big list test-------------'
    a=[1]*1000
    b=['a']*(10**8)
    print 'add cost:%s seconds'%test_add(a,b)
    print 'extend cost:%s seconds'%test_extend(a,b)

    print '-----small list test-------------'
    a=[1]*1000
    b=['a']*(10**2)
    print 'add cost:%s seconds'%test_add(a,b)
    print 'extend cost:%s seconds'%test_extend(a,b)






我机器是win7,64bit,6G 内存,i3 cpu,结果如下:
1
2
3
4
5
6
-----big list test-------------
add cost:1.30500006676 seconds
extend cost:0.591000080109 seconds
-----small list test-------------
add cost:0.0 seconds
extend cost:0.0 seconds





在b为10^8长度的时候,extend所耗的时间几乎只有+操作的一半。
在1000长度的级别,相差不大。几乎相同。

+=等同于extend,如下:
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
import time

def time_cost(func):
    def _time_cost(*args,**kw):
        t1=time.time()
        func(*args,**kw)
        t2=time.time()
        return t2-t1
    return _time_cost

@time_cost
def test_add(list_a,huge_list_b):
    list_a+=huge_list_b
    return list_a
@time_cost
def test_extend(list_a,huge_list_b):
    return list_a.extend(huge_list_b)


if __name__=='__main__':
    print '-----big list test-------------'
    a=[1]*1000
    b=['a']*(10**8)
    a2=[1]*1000
    print '+= cost:%s seconds'%test_add(a,b)
    print 'extend cost:%s seconds'%test_extend(a2,b)




 输出:
1
2
3
-----big list test-------------
+= cost:0.506999969482 seconds
extend cost:0.510999917984 seconds







欢迎光临 Odoo中文网|Odoo实施培训 (http://www.chinaodoo.net/) Powered by Discuz! X3.2