亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

python3性能加速幾種方式及性能(五)

2023-05-04 02:14:20
20
0

在前幾章,進行了python幾種加速的測試。本次進行性能的測試。

測試代碼

import timeit
import matx
from python_cython.cython_test import count as cython_count
from python_extern.Extest import count as extern_count
from ctypes import *

def fib(n: int) -> int:
    ret :int = 0
    for x in range(n + 1):
        ret += 1
    return ret


def main():
    fib_script = matx.script(fib)
    ctype_handel = cdll.LoadLibrary("./python_ctypes/count.so")
    tmp = c_int(1000000)
    print('Matx   execution time: %.9fs' % timeit.timeit(lambda: fib_script(1000000), number=10)) # 0.03s
    print('cython execution time: %.9fs' % timeit.timeit(lambda: cython_count(1000000), number=10)) # 0.03s
    print('extern execution time: %.9fs' % timeit.timeit(lambda: extern_count(1000000), number=10)) # 0.03s
    print('ctype  execution time: %.9fs' % timeit.timeit(lambda: ctype_handel.count(tmp), number=10)) # 0.03s
    #print(fib_script(1000000))
    #print(cython_count(1000000))
    #print(extern_count(1000000))
    #print(ctype_handel.count(tmp))
if __name__ == '__main__':

    main()

結果如下:

python3 test.py
Matx   execution time: 0.000057373s
cython execution time: 0.000023637s
extern execution time: 0.004334424s
ctype  execution time: 0.000057794s

擴展和ctype使用的同樣的O2級別優化。但是性能差距超乎意料,反復測試沒有找到原因。

測試目錄如下

tree ./
./
├── python_ctypes
│   ├── 1.py
│   ├── count.cc
│   └── count.so
├── python_cython
│   ├── 1.py
│   ├── cython_test.c
│   ├── cython_test.cpython-36m-x86_64-linux-gnu.so
│   ├── cython_test.html
│   └── cython_test.pyx
├── python_extern
│   ├── 1.py
│   ├── build
│   │   ├── lib.linux-x86_64-3.6
│   │   └── temp.linux-x86_64-3.6
│   │       └── my_extend.o
│   ├── Extest.cpython-36m-x86_64-linux-gnu.so
│   ├── my_extend.c
│   └── setup.py
└── test.py

6 directories, 14 files
0條評論
0 / 1000
s****n
8文章數
0粉絲數
s****n
8 文章 | 0 粉絲
原創

python3性能加速幾種方式及性能(五)

2023-05-04 02:14:20
20
0

在前幾章,進行了python幾種加速的測試。本次進行性能的測試。

測試代碼

import timeit
import matx
from python_cython.cython_test import count as cython_count
from python_extern.Extest import count as extern_count
from ctypes import *

def fib(n: int) -> int:
    ret :int = 0
    for x in range(n + 1):
        ret += 1
    return ret


def main():
    fib_script = matx.script(fib)
    ctype_handel = cdll.LoadLibrary("./python_ctypes/count.so")
    tmp = c_int(1000000)
    print('Matx   execution time: %.9fs' % timeit.timeit(lambda: fib_script(1000000), number=10)) # 0.03s
    print('cython execution time: %.9fs' % timeit.timeit(lambda: cython_count(1000000), number=10)) # 0.03s
    print('extern execution time: %.9fs' % timeit.timeit(lambda: extern_count(1000000), number=10)) # 0.03s
    print('ctype  execution time: %.9fs' % timeit.timeit(lambda: ctype_handel.count(tmp), number=10)) # 0.03s
    #print(fib_script(1000000))
    #print(cython_count(1000000))
    #print(extern_count(1000000))
    #print(ctype_handel.count(tmp))
if __name__ == '__main__':

    main()

結果如下:

python3 test.py
Matx   execution time: 0.000057373s
cython execution time: 0.000023637s
extern execution time: 0.004334424s
ctype  execution time: 0.000057794s

擴展和ctype使用的同樣的O2級別優化。但是性能差距超乎意料,反復測試沒有找到原因。

測試目錄如下

tree ./
./
├── python_ctypes
│   ├── 1.py
│   ├── count.cc
│   └── count.so
├── python_cython
│   ├── 1.py
│   ├── cython_test.c
│   ├── cython_test.cpython-36m-x86_64-linux-gnu.so
│   ├── cython_test.html
│   └── cython_test.pyx
├── python_extern
│   ├── 1.py
│   ├── build
│   │   ├── lib.linux-x86_64-3.6
│   │   └── temp.linux-x86_64-3.6
│   │       └── my_extend.o
│   ├── Extest.cpython-36m-x86_64-linux-gnu.so
│   ├── my_extend.c
│   └── setup.py
└── test.py

6 directories, 14 files
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0