Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6270 / 2994 / 1051
Регистрация: 01.06.2021
Сообщений: 11,107

Почему Qt такой медленный?

30.07.2024, 00:48. Показов 7281. Ответов 89
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Одинаковый код на JavaScript выполняется быстрее, чем на Qt. Отладочная версия проги на Qt вообще тормозит жутко. Релизная версия работает быстрее, но все равно уступает JS. Это просто смешно. Как можно проиграть коду, выполняемому в браузере. Какой тогда толк, что там С++?

Немного о проге на Qt. Там много операций выполняется с QString. Например, поиск индекса первого появления символа в строке, добавление символов к строке и т.д. Когда размер строки достигает 25к и больше, то начинаются тормоза. В проге также постоянно получаю или присваиваю текст виджетам QTextEdit.

Написал одинаковую прогу на HTML + CSS + JS. Файл занимает всего 10 КБ. В качестве аналога QTextEdit использовал HTML элемент textarea. Прога выполняется в браузере очень быстро. Респект движку V8.

Стоит ли попробовать поменять QString на std::string, работать с последним, а потом конвертировать в QString для вывода на виджет?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2024, 00:48
Ответы с готовыми решениями:

Почему Wi-Fi такой медленный?
Есть жесткий диск на 500Gb и USB 3.0. Есть Wi-Fi роутер ASUS Wireless RT-N10U (300 Mbit) с USB 2.0. Есть ноутбук с Wi-Fi bgn. ...

Почему Windows такой медленный по сравнению с linux
Я поставил себе linux на один комп, а на другом стоит Windows, при этом Windows съедает у меня 512 оперативки и при этом долго думает а...

Почему такой способ копирования значений байт Bitmap медленный?
public static byte BitmapToByteRgbNaive(Bitmap bmp) { int width = bmp.Width, height = bmp.Height; byte res = new...

89
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6270 / 2994 / 1051
Регистрация: 01.06.2021
Сообщений: 11,107
27.08.2025, 19:17  [ТС]
Студворк — интернет-сервис помощи студентам
Geek Geekson, я проверил wxStyledTextCtrl из wxWidgets и оказалось, что он справляется с большими строками.
Как писал выше, wxStyledTextCtrl использует библиотеку Scintilla. Эта же библиотека используется в Notepad++ и в некоторых IDE. Т.е. это мощная штука. Там есть и нумерация строк, и подсветка синтаксиса и прочее, как это бывает в текстовых редакторах.
Приложение в архиве, можешь сам убедиться, что в текстовое поле вставляется длинная строка без переносов.

Если приложения со статической линковкой на wxWidgets выходит до 8 МБ, то тут вышло 11,4 МБ. Но это не много, если сравнивать с Qt.
Вложения
Тип файла: zip wxStyledTextCtrl.zip (4.42 Мб, 6 просмотров)
1
27.08.2025, 19:40

Не по теме:

Royal_X, спасибо за пример. Кстати на "Edit" почему-то Касперский параноит: https://www.virustotal.com/gui... ?nocache=1

0
27.08.2025, 19:43  [ТС]

Не по теме:

Цитата Сообщение от Geek Geekson Посмотреть сообщение
почему-то Касперский параноит
ну очевидно же, что если все антивирусы на вирустотал молчат, а каспер ругается, то значит именно антивирус говно

0
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
27.08.2025, 20:09
Royal_X, потестил твои примеры на непрерывной строке 9 млн символов: wxStyledTextCtrl заметно тормозит (вставка ~1 c, правка ~3 c). Но QPlainTextEdit конечно такое будет жевать с минуту. А Edit на той же строке вообще без тормозов (и правка тоже).

Не по теме:

ну очевидно же, что если все антивирусы на вирустотал молчат, а каспер ругается, то значит именно антивирус говно
того же мнения, фигею с современных антивирусов. Тут он уверенно пишет - какой-то троян coins (и это в 22 кб). Вот почему блин ему так вздумалось? А остальные 70 молчат.

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6270 / 2994 / 1051
Регистрация: 01.06.2021
Сообщений: 11,107
27.08.2025, 20:14  [ТС]
Geek Geekson, а MFC ты потестил?
0
27.08.2025, 20:47

Не по теме:

Royal_X, сорри, ни в VS ни с MFC пока не работал, надо разобраться, пока руки не дойдут.

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6270 / 2994 / 1051
Регистрация: 01.06.2021
Сообщений: 11,107
27.08.2025, 22:02  [ТС]
Geek Geekson, ладно, я сам проверил. MFC работает так же быстро, что и натив. Приложение в архиве во вложении.

Я сейчас выставил лимит на 2 млрд символов. Но мне кажется, что можно аж до 2^31 символов (2.1 млрд). По сути, в MFC я использовал Rich 2, который ограничен до 2^31 символов. На практике, ограничено памятью устройства, поскольку никто не будет столько символов засовывать в Edit.

Но вот на чистом WinAPI можно даже Rich 4.1 прикрутить (в примере выше как раз был он, но с ограничением на 16М). Там вообще нет ограничения. Но все это уже чрезмерно. MFC вполне пригоден. И кстати, для него в Visual Studio есть дизайнер, так что можно разрабатывать интерфейс через дизайнер, как в Qt.
Вложения
Тип файла: zip MFCApplication1.zip (65.7 Кб, 6 просмотров)
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6270 / 2994 / 1051
Регистрация: 01.06.2021
Сообщений: 11,107
27.08.2025, 22:11  [ТС]
Geek Geekson,

Итак, если сортировать по мощи, то будет так (от мощного к слабому):
WinAPI
MFC
wxWidgets
Qt

Но так же само список будет выглядеть и по сложности разработки. Так, что если wxWidgets устраивает (он не такой медленный как Qt, а на уровне Notepad++), то советую выбрать его. К тому же, в wxWidgets такая же мощная система layout, как в Qt.

Если нужны строки прям на 10М+, то выбирай MFC. Но тут возня с управлением макетом. Есть только банальное выравнивание по сетке.

WinAPI же можно выбрать только если создается оконное приложение с неизменяемым размером, ведь там нет вообще управления макетом, надо все вручную.
0
Модератор
Эксперт Java
 Аватар для alecss131
2889 / 1394 / 412
Регистрация: 11.08.2017
Сообщений: 4,454
Записей в блоге: 2
27.08.2025, 22:17
Royal_X, Советую попробовать для сравнения JUCE, хотя он больше в звуке используется
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6270 / 2994 / 1051
Регистрация: 01.06.2021
Сообщений: 11,107
27.08.2025, 22:38  [ТС]
Geek Geekson, можно попробовать еще WinUI 3. Там уже будет современный интерфейс с ускорением DirectX. Но как будет работать Edit - я не знаю, ведь там уже XAML.
WinUI 3 это как QML в Qt, т.е. интерфейсы нового поколения, с анимацией, с эффектами на граф. ускорении.
Кстати, многие современные приложения винды, начиная от Проводника, используют WinUI 3. Блокнот тоже.

Добавлено через 8 минут
Цитата Сообщение от alecss131 Посмотреть сообщение
Советую попробовать для сравнения JUCE
мне лень пробовать. Тем более, на винде все, что дальше от натива, то медленнее.

Добавлено через 5 минут
Geek Geekson, я вот читаю в интернете, говорят, что из VS убрали XAML Designer для WinUI 3. Я выше писал, что там есть дизайнер, но оказывается, что его уже нет.
XAML designer isn’t available for WinUI3. It was an extremely stupid decision some idiot made.
Получается, что придется проектировать интерфейс через код. Вообще, опытные всегда предпочитают через код. Помню, я когда-то обсуждал QML в Qt, мне эксперты рассказывали, что лучше все делать через код и не пользоваться QML дизайнером, например Qt Design Studio или даже лайтовым дизайнером, встроенным в Qt.

Добавлено через 3 минуты
Geek Geekson, поэтому, если хочешь настроить интерфейс через дизайнер, как в Qt, то выбирай wxWidgets + wxFormBuilder. Не думаю, что тебе нужно создать прогу круче Notepad++. Так что Scintilla должна полностью устроить.

Иначе, остается MFC. Там есть дизайнер в VS для MFC, но делает только банальные вещи, без полноценного управления макетом...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2025, 22:38
Помогаю со студенческими работами здесь

Медленный вай фай, почему?
Здравствуйте! у меня медленный вай фай. все оплачено такого никогда не было и еще не открывается http://192.168.1.1/ скрин...

Медленный ввод в текстовые поля / медленный отклик в google chrome?
Привет! Может кто знает, Сегодня заметил, что ввод текста в браузере chrome стал очень медленным и отклик тоже. Например, при наборе...

Почему скорость обмена информации с сервера очень медленный
Привет всем....Не могу понять почему скорость обмена информации из базы Mysql очень медленно??? На локальном сервере нормально работает....

Почему любой первый запрос медленный, а остальные быстрее?
первый запрос после установления соединения с БД очень медленный (10 секунд), а последующие такие запросы уже могут пройти за 3 секунды и...

Почему если Лисп такой хороший, почему он не популярен?
Здравствуйте, уважаемые коллеги! Посыплю соль на раны: почему если Лисп такой хороший, почему он не популярен? Мне известны следующие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
90
Ответ Создать тему
Новые блоги и статьи
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru