python算法1

通过如下实验,发现String字符串不断 原地叠加在数量比较大时 耗时比较大。

见如下代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import timeit
NUM_LEN = 1000 #10000 # 100000 # 1000000 #

def std_str_add4int(num = NUM_LEN):
    str_sum = ""
    for i in xrange(num):
        str_sum += "%05d\n"%i
    return len(str_sum)

def pyc_str_add4int(num = NUM_LEN):
    return len("\n".join(["%05d"%i for i in xrange(num)]))

if __name__ == '__main__':
    test_methods = [std_str_add4int, pyc_str_add4int]
    print NUM_LEN, ":"
    for test in test_methods:
        name = test.__name__ # test.func_name
        t = timeit.Timer(name + '()', 'from __main__ import ' + name)
        print(name + ' takes time : %f' % t.timeit(1))

当NUM_LEN分别为1000、10000、100000、1000000时,运行结果分别如下:

1000 :
std_str_add4int takes time : 0.000916
pyc_str_add4int takes time : 0.000467

1000 :
std_str_add4int takes time : 0.000693
pyc_str_add4int takes time : 0.000469
10000 :
std_str_add4int takes time : 0.006272
pyc_str_add4int takes time : 0.005265
100000 :
std_str_add4int takes time : 0.065305
pyc_str_add4int takes time : 0.054732
1000000 :
std_str_add4int takes time : 2.660269
pyc_str_add4int takes time : 0.582706

由上述执行时间,明显可知,发现String字符串不断 原地叠加在数量比较大时 耗时比较大。

可能原因:

    1. 对1000000条进行叠加,std_str_add4int, pyc_str_add4int的操作数均为1000000,

        但空间上,std_str_add4int方法使用的长度约为 1+2+3+ ...... + 1000000,比较复杂,

        而pyc_str_add4int方法使用的是Python内部方法,可能比较节省空间。

 

转载于:https://my.oschina.net/snjianxiao/blog/1575197

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值