2013-06-26 4 views
-8

Я обрабатываю огромные файлы размером 300 тыс. И вижу важную проблему с производительностью.Увеличение производительности с помощью анонимных функций?

Проблема связана с количеством проверок, которые выполняются.

У нас есть много функций и мы планируем превратить их в анонимные функции.

Я хочу знать, есть ли какое-либо повышение производительности при использовании анонимных функций.

+1

Какая функция? Для проверки чего? –

+1

300 килобайт не так уж и велико. Также уточните свою проблему более четко с конкретными примерами и деталями вашего кода, который вы хотите оптимизировать. – hexafraction

+1

Вы знаете, что определения функций с лямбдой могут иметь только одно выражение? Если у вас не будет много однострочных функций, возвращающих значение, маловероятно, что вы сможете конвертировать их в lambdas. Даже если вы можете ожидать, что разница в производительности будет незначительной. –

ответ

3

Ответ на вопрос сам по себе легко, no нет увеличения производительности при использовании анонимных функций в 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] 

Как видно, существует никакой реальной большой прирост производительности стоит на самом деле, учитывая, вашу проблему производительности наиболее вероятно, лежит где-то в другом месте.