Python导入性能-import载入测试

    技术2022-06-27  59

    在使用Python中,import是非常非常常用的。

    那它性能怎么样呢?今天就想测测Python的import性能。

    首先,我这种测试,肯定不怎么准,充其量只能提供个参照,大家看看,就图一个乐呵吧。

     

    ● linux下,用time.time()进行的测试

    因为赋值操作是语言的最基础操作,所以以赋值操作作为基准,做对比。

    ▲首先,确定赋值操作(a=1)的时间消耗:

    3.09944152832e-06  (0.000003 s)

     

    ▲然后,我们来做一下import的测试: 1,如果导入某个自定义模块的py文件: <module 'core.user' from '/opt/A-Socket/core/user.py'>

    0.00202393531799   (平均0.002s) ▲导入导入某个自定义模块的pyc文件: <module 'core.user' from '/opt/A-Socket/core/user.pyc'> 0.000988006591797  (导入pyc,速度快了一倍。平均0.001s )

    ▲把自定义模块放在Python的安装目录下: <module 'user' from '/usr/local/lib/python2.6/user.pyc'> 0.000210046768188  (提高了一个数量级!我没看错吧!)

    ▲导入系统自带的os模块os.pyc: 5.96046447754e-06  (为什么导入os模块,速度如此惊人呢?!) ▲导入系统自带的socket模块socket.pyc <module 'socket' from '/usr/local/lib/python2.6/socket.pyc'> 0.00739884376526  (导入socket模块pyc)

    ▲导入第三方模块: <module 'setuptools' from '/usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/setuptools/__init__.py'> 0.0939381122589  (这个速度,也算可以接受) ▲导入第三方模块: twisted.internet.protocol.Protocol 0.144118070602  (导入twisted这个第三方模块很耗性能啊……)

     

    ——————————————————————————————— ● windows下,用time.clock()进行的测试

    ▲首先,确定赋值操作的时间消耗: 1.56498194252e-006

    ▲导入系统自带的os模块os.pyc: <module 'os' from 'c:/python25/lib/os.pyc'> 5.10494109683e-006  (可以看出与Linux的速度几乎相同)

    ▲导入导入某个自定义模块的pyc文件: <module 'core.user' from 'D:/A-Socket/core/user.py'> 0.0225309700273  (似乎比Linux慢一些……)

     

    =====================================================

    总结:

    个人估计,python的导入,就是动态读文件的过程。文件大,读的就慢。如果不把导入模块设计好,似乎会形成性能上的瓶颈。

     除非是研究python底层的实现,才能搞懂导入是怎么回事,才能理解和突破速度瓶颈。

     


    最新回复(0)