Здравствуйте, гость ( Вход | Регистрация )
evgen55 | Дата 2.8.2017, 14:23 |
Во первых QTime на Windows возвращает с точностью кратной то ли 15, то ли 20 мс, в любом случае, это слишком плохо. Попробуйте QElapsedTimer, интерфейс тот же, а точность обычно лучше. http://doc.qt.io/qt-4.8/qelapsedtimer.html Если все равно 40 мс будет получаться, замерьте время всего цикла(с 40000-80000 вставок) и разделите, тогда получите точное время. 40000-80000 вставок это довольно много, попробуйте все таки execBatch и если не поможет, то попробуйте просто слепить в строке нужный запрос на вставку всех строк за раз и его выполнить - получите скорость вставки напрямую. Спасибо большое, слепить запрос в одну строку помогло. execBatch пробовал он не поддерживается |
|
lanz | Дата 1.8.2017, 11:21 |
Во первых QTime на Windows возвращает с точностью кратной то ли 15, то ли 20 мс, в любом случае, это слишком плохо. Попробуйте QElapsedTimer, интерфейс тот же, а точность обычно лучше. http://doc.qt.io/qt-4.8/qelapsedtimer.html Если все равно 40 мс будет получаться, замерьте время всего цикла(с 40000-80000 вставок) и разделите, тогда получите точное время. 40000-80000 вставок это довольно много, попробуйте все таки execBatch и если не поможет, то попробуйте просто слепить в строке нужный запрос на вставку всех строк за раз и его выполнить - получите скорость вставки напрямую. |
|
evgen55 | Дата 1.8.2017, 10:41 |
Цитата Отображение строк 0 - 24 (4274 всего, Запрос занял 0.0018 сек.) Это возможно сравнение яблок с апельсинами. 0.0018 это то что показывает phpmyadmin, я если честно не знаю, как он меряет, что он включает в это время и как вы меряли 40 мс. Приложите пожалуйста минимальный проект с бенчмарком чтобы можно было конкретно уже смотреть. Кроме того - существует ли проблема вообще? Т.е. вы наблюдаете тормоза при вставке или вам просто не нравится число 40? Попробуйте вставить много строк, увеличивается ли время пропорционально? Как вы меряли время? Согласитесь, что несколько странно видеть сишный код в 20 раз медленнее php, не верю int id;
Соответственно когда селект возвращает примерно 4000 объектов и внутренний цикл содержит примерно 10-20 item получается слишком долго |
|
lanz | Дата 1.8.2017, 9:13 |
Цитата Отображение строк 0 - 24 (4274 всего, Запрос занял 0.0018 сек.) Это возможно сравнение яблок с апельсинами. 0.0018 это то что показывает phpmyadmin, я если честно не знаю, как он меряет, что он включает в это время и как вы меряли 40 мс. Приложите пожалуйста минимальный проект с бенчмарком чтобы можно было конкретно уже смотреть. Кроме того - существует ли проблема вообще? Т.е. вы наблюдаете тормоза при вставке или вам просто не нравится число 40? Попробуйте вставить много строк, увеличивается ли время пропорционально? Как вы меряли время? Согласитесь, что несколько странно видеть сишный код в 20 раз медленнее php, не верю |
|
evgen55 | Дата 1.8.2017, 8:16 |
Прежде всего посмотрите, где у вас задержка, в Qt? При соединении с сервером? На сервере? В зависимости от этого нужно смотреть что конкретно оптимизировать. Любой запрос (сама функция exec) выполняется 40 милисекунд, а в phpmyadmin выполняется мгновенно Отображение строк 0 - 24 (4274 всего, Запрос занял 0.0018 сек.) |
|
lanz | Дата 31.7.2017, 9:06 |
Мнгновенно это сколько в миллисекундах? | |
evgen55 | Дата 31.7.2017, 8:56 |
Прежде всего посмотрите, где у вас задержка, в Qt? При соединении с сервером? На сервере? В зависимости от этого нужно смотреть что конкретно оптимизировать. Любой запрос (сама функция exec) выполняется 40 милисекунд, а в phpmyadmin выполняется мгновенно |
|
lanz | Дата 28.7.2017, 16:13 |
Прежде всего посмотрите, где у вас задержка, в Qt? При соединении с сервером? На сервере? В зависимости от этого нужно смотреть что конкретно оптимизировать. | |
evgen55 | Дата 27.7.2017, 20:40 |
Что тотут не так, транзакции не поддерживаются - это очень странно. Цитата Note that some databases need to be open() before this can be determined. Спасибо, теперь только DB.driver()->hasFeature(QSqlDriver::BatchOperations); false Можно ли это както исправить? |
|
lanz | Дата 27.7.2017, 19:09 |
Что тотут не так, транзакции не поддерживаются - это очень странно. Цитата Note that some databases need to be open() before this can be determined. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 26.4.2024, 22:32 |