mysql++ выборка данных в storein() тормозит
От: Lixo  
Дата: 22.12.10 03:25
Оценка:
Здравствуйте все.
Подскажите, как правильно использовать mysqlpp
есть такой код
mysqlpp::sql_create_5(SBuilding,
    1, 0, 
    mysqlpp::sql_int, idBuilding,
    mysqlpp::sql_int, naznachenid,
    mysqlpp::sql_int, flo,
    mysqlpp::sql_int, num_points,
    mysqlpp::sql_blob, XY);

//далее соединение с базой данных, инициализация объекта mysqlpp::Query query и т.д
...

//далее выполнестя запрос
 std::vector<SBuilding> bui_res;
 query.reset();
 query<<" Select * from Buildings "
 
 query.storein(bui_res); //в этом месте жутко тормозит

//далее использую результаты запроса

Запрос возвращает 42000 строк и на сервере выполняется за 0.3 сек.... во всяких клиентах, типа MySqlWorkbench или dbForgeStudio, данные появляются тоже практически сразу.
У меня же, storein() занимает около 2х минут, а хотелось бы получать данные с той же скоростью что и вышеперечисленные программы
Re: mysql++ выборка данных в storein() тормозит
От: chemey  
Дата: 22.12.10 09:53
Оценка:
Здравствуйте, Lixo, Вы писали:

L> std::vector<SBuilding> bui_res;


L> query.storein(bui_res); //в этом месте жутко тормозит


L>Запрос возвращает 42000 строк и на сервере выполняется за 0.3 сек.... во всяких клиентах, типа MySqlWorkbench или dbForgeStudio, данные появляются тоже практически сразу.

L>У меня же, storein() занимает около 2х минут, а хотелось бы получать данные с той же скоростью что и вышеперечисленные программы

Возможно, потому, что ты сторишь в вектор. Вектор при добавлении элементов периодически реаллочит память и переносит в новый кусок все свои записи — а если у тебя SBuilding развесистый, то это может быть очень небыстро.
Я бы попробовал использовать std::list, если mysql++ это позволяет.
Бзззззззжжжжж
Re[2]: mysql++ выборка данных в storein() тормозит
От: Lixo  
Дата: 23.12.10 06:18
Оценка:
C>Я бы попробовал использовать std::list, если mysql++ это позволяет.
Спасибо за подсказку. C list'ом стало в 2 раза быстрее, но этого всеравно недостаточно, так что буду дальше искать способы оптимизации
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.