@KrivdaKravdaBum

Локальный клиент парсинга XML и обновления SQLite таблицы (C#). Возможно ли оптимизация?

Написан клиент обновления таблицы в БД SQLite. Скачивает XML с сервера, парсит и обновляет данные в таблице. XML содержит > 40000 строк (и каждый месяц количество строк увеличивается), такого вида:
<card card="05871" article="0016" count="1" timestamp="1519134555"/>

Встал вопрос об оптимизации данного действия, потому как на обновление таблицы уходит минимум 2 минуты. Изначально написан на C#. Хочу переписать всё на C++. Стоит ли такое делать, будет ли какое-то ускорение?
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Сначала надо попрофилировать, на что конкретно уходит много времени.
Если именно на "обновление таблицы" (тобишь на выполнение SQL-запросов) - то переписывание ничего не даст - надо что то делат ьс базой или с запросами.
Ответ написан
Встал вопрос об оптимизации данного действия, потому как на обновление таблицы уходит минимум 2 минуты.

Ну это известный прикол что по-умолчанию SQlite делает транзакцию на каждый insert. Запустите транзакцию и закоммитьте её один раз и все строки вставятся за секунду максимум.

Вы начали выдумывать какие-то мегаспособы ускорения, не исследовав корень проблемы. А корень в том, что на транзакцию SQLite создаёт файл отката, и когда таки транзакций 40000, это будет столько же операций пересоздания файла. Это просто пздц какая тяжелая операция для файловой системы, и ни процессор ни многопоточность вообще не при чём. Могли бы догадаться сами, т.к. 40000 небольших записей это вообще не объём.

Решение гуглится за 20 секунд и написано в FAQ по SQLite: www.sqlite.org/faq.html#q19
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Кнопка Екатеринбург
До 100 000 руб.
Payment Systems Москва
от 160 000 до 200 000 руб.
ЛАНИТ Москва
от 80 000 до 100 000 руб.
19 авг. 2018, в 18:43
2000 руб./за проект
19 авг. 2018, в 17:11
200000 руб./за проект
19 авг. 2018, в 12:12
40000 руб./в месяц