Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > LoadFromDataSet - как работает?


Автор: Rocksteady 3.6.2008, 13:41
Всем привет.
У меня имеется два датасета (типа TMemTableEh - из библиотеки Эхлиб 4). Я заполняю их, используя примерно следующий код:
Код

for (int j = 0; j < 60000; ++j)
 {
   mdtTestEh->Append();
   mdtTestEhId->Value = j;
   mdtTestEhName->Value = "Everybody lies";
   mdtTestEhValue->Value = random(100);
   mdtTestEhComment->Value = "Ehlib 4.0";
   mdtTestEhTime->Value = Now();
   mdtTestEh->Post();
}


Когда количество записей, которые я хочу добавить, равно 60000, эта процедура занимает примерно 42 секунды.
Но когда я копирую контент  одного датасета в другой, используя ф-ю LoadFromDataSet, это занимает не более 800 миллисекунд.
Я просто не могу разобраться, почему такая гигантская разница. Глядела в код LoadFromDataSet - там ф-я fetchRecord вызывается для каждого рекорда соурсного датасета.
Буду очень благодарна за ваши объяснения.

Автор: Escort 25.6.2008, 20:41
возможно Now() занимает какое-то кол-во времени. Насчет 42 сек я smile 

Автор: nickkk 29.12.2010, 06:05
Возможно потому что не было вызова DisableControls перед циклом, из-за чего при добавлении каждой записи происходили обработки разных событий графических компонентов.
P.S. А вдруг еще нужно? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)