Python: Почему НЕАКТИВНО настолько медленный?

НЕАКТИВНЫЙ мой любимый редактор Python. Это предлагает очень хорошую и интуитивную оболочку Python, которая чрезвычайно полезна для поблочного тестирования и отладки и аккуратного отладчика.

Однако код, выполненный под НЕАКТИВНЫМ, является безумно медленным. Безумно я имею в виду 3 медленные порядка величины:

удар

time echo "for i in range(10000): print 'x'," | python

Занимает 0,052 с,

НЕАКТИВНЫЙ

import datetime
start=datetime.datetime.now()
for i in range(10000): print 'x',
end=datetime.datetime.now()
print end-start

Берет:

>>> 0:01:44.853951

Который примерно в 2,000 раз медленнее.

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

Adam

22
задан HostileFork 17 May 2010 в 15:37
поделиться

2 ответа

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

Я только что попробовал это на своей системе Q6600 (разогнан на 3 ГГц), и мои цифры еще хуже. Но легко видеть, что они снижаются, чем больше добавляется текст вывода.

Я попытался запустить его с

1000 итераций => 7,8 с 2000 итераций => 28,5 с 3000 итераций => 70 с

Я сделал несколько в прошлом материал TK низкого уровня, и я знаю, что виджет TkText сохраняет текст в структуре BTree. Добавление символа к тексту за раз - один из худших способов сделать это, но, похоже, именно это и делает IDLE. Обычный способ - захватить больше данных и добавить больший кусок текста.

Как ни удивительно, если вы напишете print 'x \ n', результат будет намного быстрее. 3000 итераций за 7 секунд и ваши 10000 за 19 секунд.

Итак, проблема определенно заключается в добавлении одиночных символов к существующим строкам. Программист IDLE не знал, как работает TkText.

Поэтому советуем добавлять в текст больше новой строки или выводить большие фрагменты, а не только один символ «x».

30
ответ дан 29 November 2019 в 04:50
поделиться

Проблема в виджете Tkinter Text и его неэффективном управлении очень длинными строками, и вы создаете его. Вы заметите, что хотя любая часть видна очень длинная строка, вся прокрутка чертовски медленная.

9
ответ дан 29 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: