Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Быстродействие Builder 5 (BDE, ADO) и VB 6 (ADO) c MS SQL 7

493
22 марта 2002 года
Taras
24 / / 20.09.2000
Решил проверить, кто работает быстрее с MS SQL 7, Builder или VB.
Тестирование проводил на компьютере сервера, что бы исключить сетевой фактор.

Объектом тестирования была таблица 56 столбцов, 10 000 строк.

1. Проверка скорости выборки данных в текстовое поле – Memo1
Заполнить Memo1 содержимым одного столба (10 000 строк).

Код Builder для ADO

ADOConnection1->Connected = true;
ADODataSet1->CommandType = cmdText;
ADODataSet1->CommandText = "SELECT * FROM DSN2";
ADODataSet1->Open();

Memo1->Clear();
while (!ADODataSet1->Eof)
{
Memo1->Lines->Add(IntToStr(ADODataSet1->FieldByName("Call")->AsInteger));
ADODataSet1->Next();
}

ADOConnection1->Connected = false;

Код Builder для BDE

Database1->Connected = true;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM DSN2");
Query1->Open();

Memo1->Clear();
while (!Query1->Eof)
{
Memo1->Lines->Add(IntToStr(Query1->FieldByName("Call")->AsInteger));
Query1->Next();
}
Database1->Connected = false;

Код VB для ADO

Dim rs As New ADODB.Recordset
Dim interval As Date

Text1.Text = ""

rs.Open "SELECT * FROM DSN2", "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=Schemes;Initial Catalog=Schemes", adOpenDynamic, adLockOptimistic, adCmdText

Dim str As String

Do While rs.EOF = False
str = str & rs.Fields(0).Value & vbCrLf
rs.MoveNext
Loop

Text1.Text = str
Set rs = Nothing

РЕЗУЛЬТАТ

Builder (ADO) – 000111 (повторно 000110)
Builder (BDE) – 000100 (повторно 000055)
VB 6.0 (ADO) – 000120 (повторно 000058)


2. Проверка скорости обновления полей таблицы
Обновляем 6 полей таблицы, 10 000 строк.

Код Builder для ADO

ADOConnection1->Connected = true;
ADOCommand1->CommandType = cmdText;
ADOCommand1->CommandText = "UPDATE DSN2 SET Call = Call * 2, Tok_Left = Tok_Left + 'ï', Tok_Right = 'â', Tok_Top = 'â', Tok_Bottom = 'â', Who_pass = Who_pass + 'ï'";
ADOCommand1->Execute();
ADOConnection1->Connected = false;

Код Builder для BDE

Database1->Connected = true;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("UPDATE DSN2 SET Call = Call * 2, Tok_Left = Tok_Left + 'ï', Tok_Right = 'â', Tok_Top = 'â', Tok_Bottom = 'â', Who_pass = Who_pass + 'ï'");
Query1->ExecSQL();
Database1->Connected = false;

Код VB для ADO

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command


cn.Open "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=Schemes;Initial Catalog=Schemes"

cmd.ActiveConnection = cn
cmd.CommandText = "UPDATE DSN2 SET Call = Call * 2, Tok_Left = Tok_Left + 'ï', Tok_Right = 'â', Tok_Top = 'â', Tok_Bottom = 'â', Who_pass = Who_pass + 'ï'"
cmd.CommandType = adCmdText
cmd.Execute

РЕЗУЛЬТАТ

Builder (ADO) – 000003
Builder (BDE) – 000008 (повторно 000005)
VB 6.0 (ADO) – 000003

3. Проверка скорости добавления строк в таблицу
Добавляем 10 000 строк в таблицу.

Код Builder для ADO

ADOConnection1->Connected = true;
ADOCommand1->CommandType = cmdText;

for(int i=0; i<count_rows; i++)
{
ADOCommand1->CommandText = &quot;INSERT INTO phpbb2_DSN2 ([Call], [Tok_Left], [Tok_Right], [Tok_Top], [Tok_Bottom], [Who_pass]) VALUES (&quot; + IntToStr(i) + &quot;, '&amp;iuml;', '&amp;iuml;', '&amp;iuml;', '&amp;iuml;', '&amp;iuml;')&quot;;
ADOCommand1->Execute();
}

ADOConnection1->Connected = false;

Код Builder для BDE

Database1->Connected = true;

for(int i=0; i<count_rows; i++)
{
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(&quot;INSERT INTO phpbb2_DSN2 ([Call], [Tok_Left], [Tok_Right], [Tok_Top], [Tok_Bottom], [Who_pass]) VALUES (&quot; + IntToStr(i) + &quot;, '&amp;iuml;', '&amp;iuml;', '&amp;iuml;', '&amp;iuml;', '&amp;iuml;')&quot;);
Query1->ExecSQL();
}

Database1->Connected = false;

Код VB для ADO

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command

cn.Open &quot;Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=Schemes;Initial Catalog=Schemes&quot;
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText

For i = 1 To count_rows
cmd.CommandText = &quot;INSERT INTO phpbb2_DSN2 ([Call], [Tok_Left], [Tok_Right], [Tok_Top], [Tok_Bottom], [Who_pass]) VALUES (&quot; &amp; i &amp; &quot;, '&amp;iuml;', '&amp;iuml;', '&amp;iuml;', '&amp;iuml;', '&amp;iuml;')&quot;
cmd.Execute
Next

РЕЗУЛЬТАТ

Builder (ADO) – 000444
Builder (BDE) – ЗАВИСАЕТ
VB 6.0 (ADO) – 000102

Складывается такая картина BDE c выборкой строк и обновлением работает быстрее чем ADO (правда незначительно). Visual Basic 6 не отстает от Builder 5, по скорости работы с данными, а в некоторых отношениях опережает его
449
22 марта 2002 года
Fantasist
124 / / 20.06.2000
Ага, интересно. Это с MSSQL. А попробуй взять Paradox, и я думаю BDE проявит себя гораздо лучше.
Аноним
Не проявит. На недавно прошедшем семинаре представители борланда заявили, что BDE более не поддерживается. Наиболее перспективной на сегодняшний момент является dbGo - переделанная ADO.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог