Как работает cmd быстрее (например, 10x), чем простаивает python? [dубликат]

Вот хороший фрагмент, который я использовал несколько раз. Его действительно маленький и аккуратный. Он поддерживает все распространенные селектора css.

http://www.openjs.com/scripts/dom/css_selector/

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

2 ответа

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

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

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

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

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

Удивительно, если вы печатаете «x \n», вывод выполняется намного быстрее. 3000 итераций за 7 секунд и 10000 за 19 сек.

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

Итак, советую добавить в текст новые символы перевода или вывести более крупные фрагменты, а не только один символ «x».

30
ответ дан Lothar 15 August 2018 в 22:31
поделиться
  • 1
    +1 для отличного, всестороннего ответа. Вы случайно не знаете, понимают ли разработчики IDLE это как ошибку? – Adam Matan 6 February 2010 в 13:02
  • 2
    Это не ошибка в IDLE; если это ошибка, то она находится в виджетах Tkinter Text. – tzot 6 February 2010 в 20:30
  • 3
    Есть ли еще разработчики IDLE? Я думал, что эта программа находится в чистом режиме обслуживания. Я лично назвал бы это ошибкой. – Lothar 6 February 2010 в 21:59
  • 4
    Лотар, я и, я уверен, предыдущие разработчики IDLE, хорошо знают, как работают текстовые виджеты tk. Он определенно ориентирован на линию, но плохо обрабатывает длинные строки. Такие обычно не являются реальными приложениями. В то время как любой, кто генерирует текст и вставляет текст в текстовый виджет, может буферизировать и вставлять большие куски по мере необходимости, IDLE не генерирует текст. Он только вставляет текст, созданный программистами, как и когда направлен. Если кто-то говорит «добавить 1 символ в строку», IDLE делает это. Это было бы ошибкой, если бы этого не произошло. IDLE не знает, как долго будет еще print . – Terry Jan Reedy 11 October 2015 в 22:16
  • 5
    tzot: это не ошибка, а ограничение по дизайну - tk, а также многие предыдущие инструменты GUI делают немедленное обновление, если не указано иное (пакетная операция). Новые инструментальные средства, такие как WPF и JavaFX, переключились на фоновый рисунок & amp; независимый поток для визуализации пользовательского интерфейса - обнаруживает изменения в дереве виджета и перерисовывает в соответствии с частотой обновления экрана, что, таким образом, аннулирует вышеупомянутую проблему, но не без ввода служебных данных других видов. В WPF они даже добавляли временные обратные вызовы событий для решения аналогичных проблем в коде прикладного уровня. – AqD 14 June 2016 в 12:41

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

8
ответ дан tzot 15 August 2018 в 22:31
поделиться
Другие вопросы по тегам:

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