2013-06-26 47 views
-8

我正在處理30萬個大文件並看到一個主要的性能問題。使用匿名函數的性能增益?

問題在於正在執行的檢查的數量。

我們有很多功能,並計劃將它們變成匿名功能。

我想知道使用匿名函數時是否會有性能提升。

+1

什麼功能?檢查什麼? –

+1

300千字節不是那麼大。同時請詳細說明您的問題,並詳細說明您想要優化的代碼的具體示例和詳細信息。 – hexafraction

+1

你知道lambda函數的定義只能有一個表達式嗎?除非你有許多隻返回值的單行函數,否則你不可能將它們轉換爲lambda表達式。即使你可以預期性能差異可以忽略不計。 –

回答

3

這個問題本身很容易回答,沒有在Python中使用匿名函數沒有性能收益。你很可能會讓它變慢。

一個簡單的timeit瑣碎函數測試表明,兩者之間沒有真正的區別。我們以這兩個功能

def test(message): 
    return message + message 

testanon = lambda message: message + message 

,然後使用timeit模塊,以測試他們的執行速度:

>>> timeit.repeat("test('test')", setup="from __main__ import test") 
[0.16360807418823242, 0.1602180004119873, 0.15763211250305176] 
>>> timeit.repeat("testanon('test')", setup="from __main__ import testanon") 
[0.15949010848999023, 0.15913081169128418, 0.17438983917236328] 

由於是可見的,沒有真正的大業績增長值得實際上考慮,你的性能問題最可能在別的地方。