Что означает «встроенный метод декодирования» в Python при профилировании? - PullRequest
0 голосов
/ 21 августа 2009

Я пытаюсь сделать свою программу быстрее, поэтому я ее профилирую. Сейчас главная причина:

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

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

Ответы [ 4 ]

2 голосов
/ 21 августа 2009
1 голос
/ 21 августа 2009

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

1 голос
/ 21 августа 2009

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

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

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

0 голосов
/ 21 августа 2009

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

...