Вообще говоря, текстовый виджет должен иметь возможность обрабатывать тысячи тегов без значительного снижения производительности.Однако существуют определенные характеристики ваших данных, которые могут повлиять на это.
Исходя из вашего примера, ваши данные имеют одну из характеристик, которая приведет к снижению производительности: вы вставляете 25 000 символов с 5000 тегами, и все без перевода строки.
Это то, что документация канонического текстового виджета говорит о соображениях производительности (выделение выделено, чтобы выделить проблему, с которой вы, вероятно, сталкиваетесь):
Текстовые виджеты должныэффективно работать в различных условиях.Текстовый виджет использует около 2-3 байтов основной памяти для каждого байта текста, поэтому тексты, содержащие мегабайт или более, должны быть практичными на большинстве рабочих станций.Текст представлен внутри с модифицированной структурой B-дерева, которая делает операции относительно эффективными даже с большими текстами.Теги включаются в структуру B-дерева таким образом, чтобы теги могли охватывать большие диапазоны или иметь множество непересекающихся меньших диапазонов без потери эффективности.Метки также реализованы таким образом, что допускается большое количество меток.В большинстве случаев хорошо иметь большое количество уникальных тегов или тег, который имеет много различных диапазонов.
Одна проблема с производительностью может возникнуть, если у вас есть сотни или тысячи различных тегов, которые имеют следующие характеристики:первый и последний диапазоны каждого тега находятся около начала и конца текста соответственно, или один диапазон тегов покрывает большую часть текстового виджета.Стоимость добавления и удаления таких тегов пропорциональна количеству других тегов с такими же свойствами.Напротив, нет проблем с наличием тысяч отдельных тегов, если их общие диапазоны локализованы и равномерно распределены по всему тексту.
Очень длинные текстовые строки могут быть дорогими, особенно если они имеют много меток итеги внутри них.
Строка дисплея с курсором вставки перерисовывается каждый раз, когда курсор мигает, что вызывает постоянный поток графического трафика.Установите для атрибута insertOffTime значение 0, чтобы избежать этого.