Что означает “встроенный метод decode” в Python при профилировании?
-
19-09-2019 - |
Вопрос
Я пытаюсь сделать свою программу быстрее, поэтому я ее профилирую.Прямо сейчас главной причиной является:
566 1.780 0.003 1.780 0.003 (built-in method decode)
Что же это такое на самом деле?Я никогда не вызываю "декодировать" нигде в своем коде.Он считывает текстовые файлы, но я не верю, что они закодированы в юникоде.
Решение
Скорее всего, это метод декодирования строковых объектов.
Другие советы
(Отвечая на последний вопрос @Claudiu, странным образом спрятанный в комментарии...?!-)...Чтобы действительно ускорить маринование, попробуйте порожняя ласточка - большинство его амбициозных целей еще впереди, но он уже ДЕЙСТВИТЕЛЬНО дает по крайней мере 20-25% ускорения маринования и рассола.
Предположительно, это str.decode ...найдите в своем источнике "расшифровать".Если этого нет в вашем коде, посмотрите на процедуры библиотеки Python, которые отображаются в результатах профиля.Маловероятно, что это как-то связано с cPickle.Не могли бы вы показать нам еще несколько "причин", желательно с заголовками столбцов, чтобы дать нам более широкое представление о вашей проблеме?
Можете ли вы объяснить связь между "использованием cPickle" и "некоторые тестовые примеры будут выполняться быстрее"?
Вы исключили X и Y из "Есть ли что-нибудь, что выполнит задачу X быстрее, чем ресурс Y?" ... Обновить итак, вы спрашивали о cPickle.Что вы используете для (необязательного) аргумента протокола cPickle.dump() и / или cPickle.dumps() ?
Я считаю decode
вызывается каждый раз, когда вы конвертируете строки Unicode в строки ascii.Я предполагаю, что у вас большой объем данных в Юникоде.Я не уверен, как работают внутренности маринада, но похоже, что данные Unicode преобразуются в ascii при мариновании?