2009-08-21 3 views
0

Я пытаюсь сделать свою программу быстрее, поэтому я профилирую ее. В настоящее время главная причина заключается в следующем:Что означает «встроенный метод декодирования» в Python при профилировании?

566 1.780 0.003 1.780 0.003 (built-in method decode) 

Что это? Я никогда не называю «декодировать» в любом месте моего кода. Он читает текстовые файлы, но я не думаю, что они кодируются в кодировке Юникод.

+3

Небольшое примечание: Unicode не является кодировкой, поэтому ничто не может кодироваться в кодировке Unicode. UTF-8, ISO-8859-1 и ASCII - все кодировки. Unicode - нет. –

+0

Какую версию Python вы используете? –

+0

2.5 по разным причинам. я бы обновил, если бы мог – Claudiu

ответ

2

Скорее всего, это decode method of string objects.

+0

Я уверен, что это так, но любая идея, почему она занимает так много времени/когда она называется? Я никогда не называю это явно – Claudiu

+1

Невозможно ответить без кода. –

1

Предположительно это str.decode ... найдите свой источник для «декодирования». Если это не в вашем коде, посмотрите на подпрограммы библиотеки Python, которые отображаются в результатах профиля. Очень маловероятно, чтобы это было какое-то отношение к cPickle. Позаботьтесь, чтобы показать нам еще несколько «причин», желательно с заголовками столбцов, чтобы дать нам более широкий обзор вашей проблемы?

Можете ли вы объяснить связь между «использованием cPickle» и «некоторые тестовые сценарии будут работать быстрее»?

Вы оставили X и Y из «Есть ли что-нибудь, что сделает задачу X быстрее ресурса Y?» ... Обновление, чтобы вы спрашивали о cPickle. Что вы используете для (необязательного) протокола arg cpickle.dump() и/или cPickle.dumps()?

+0

Я имел в виду «есть что-нибудь, что сделает то, что делает cPickle, но быстрее». nvm о тестах и ​​т. д., может быть, они не связаны – Claudiu

0

Я считаю, что decode вызывается в любое время, когда вы конвертируете строки юникода в строки ascii. Я предполагаю, что у вас есть большое количество данных в Юникоде. Я не уверен, как работает внутренняя часть рассола, но похоже, что данные Unicode преобразуются в ascii при мариновании?

+2

@Peter Shinners и два upvoters: unicode_obj.encode ('ascii') -> str_obj * not * * decode * aarrgghh! –

1

(Ответ на последний вопрос Клаудиу, странно скрытый в commennt ...?! -) ... Чтобы действительно ускорить травление, попробуйте unladen swallow - большинство его амбициозных целей еще впереди, но оно уже дать как минимум 20-25% ускорения при травлении и распиловке.

+0

ой, я слышал об этом раньше. великое имя тоже. (о вопросе: «Я спрятал» его, потому что думал, что травление не связано с декодированием, но, может быть, я ошибся?) – Claudiu

+0

декодирование не произойдет во время травления (кодирование было бы, если угодно), но это может произойти во время рассыпания - вы только мариновали и никогда не рассыпались? –

Смежные вопросы