使用numba的姿勢不正確反而導致效能下降

2021-09-10 01:29:22 字數 1398 閱讀 2615

numba能夠極大的提高python在計算方面的效能。是不是所有的python**上,都可以加上numba.jit裝飾器?答案是否定的。

python3.6

fedora

pymysql

很常見的例子,從資料庫從查詢一千條資料,再進行簡單的格式轉換。

#coding=utf-8

import time

from numba import jit

import pymysql

conn = pymysql.connect(

"192.168.10.125"

,"username"

,"password"

,"db_name"

)#@jit #位置1

deftest_for()

: c =conn.cursor(

) c.execute(

"select * from user limit 1000"

) start = time.time(

)for a in c.fetchall():

to_dict(a, c.description)

end = time.time(

)print

("cost_seconds:"

, end-start)

#@jit #位置2

defto_dict

(row, description)

:"""

記錄轉為字典

"""item =

dict()

for i, field in

enumerate

(description)

: field_name = field[0]

item[field_name]

= row[i]

return item

test_for(

)

python3           0.0033788681030273438

python3 +位置1jit 0.08921098709106445

python3 + 位置1jit+位置2jit 3.846426010131836

pypy 0.0065860748291015625

對比結果,發現如果是非計算問題,引入即時編譯,反而導致效能下降。實際python在非計算問題上效能很好。

使用numba的姿勢不正確反而導致效能下降

此生必看的科學實驗-水知道答案

《了凡四訓》詳解之改過之法

印光大師十唸法(胡小林主講第1集)

精神病為什麼治不好

百病之源

template 不正確的使用指標堆疊

假設定義了乙個正確的stacktemplate,乙個簡單的堆。三個容易出錯的範例 stackst 版本1 string po 替換為 char po 旨在使用char指標而不是string物件來接受鍵盤的輸入。這種方法失敗的原因是,char指標僅僅是建立了指標 4位元組大小 沒有非配任何用於儲存輸入...

VarFormat的不正確使用導致記憶體洩漏

varformat的不正確使用導致記憶體洩漏 乙個很弱智的錯誤 如下 variant t var dblvalue cstring sout bstr bstrout sout.allocsysstring varformat var,l 0.0,0,var format nosubstitute,...

VarFormat的不正確使用導致記憶體洩漏

varformat的不正確使用導致記憶體洩漏 乙個很弱智的錯誤 如下 variant t var dblvalue cstring sout bstr bstrout sout.allocsysstring varformat var,l 0.0,0,var format nosubstitute,...