Быстродействие Builder 5 (BDE, ADO) и VB 6 (ADO) c MS SQL 7
Тестирование проводил на компьютере сервера, что бы исключить сетевой фактор.
Объектом тестирования была таблица 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 = "INSERT INTO phpbb2_DSN2 ([Call], [Tok_Left], [Tok_Right], [Tok_Top], [Tok_Bottom], [Who_pass]) VALUES (" + IntToStr(i) + ", '&iuml;', '&iuml;', '&iuml;', '&iuml;', '&iuml;')";
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("INSERT INTO phpbb2_DSN2 ([Call], [Tok_Left], [Tok_Right], [Tok_Top], [Tok_Bottom], [Who_pass]) VALUES (" + IntToStr(i) + ", '&iuml;', '&iuml;', '&iuml;', '&iuml;', '&iuml;')");
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.CommandType = adCmdText
For i = 1 To count_rows
cmd.CommandText = "INSERT INTO phpbb2_DSN2 ([Call], [Tok_Left], [Tok_Right], [Tok_Top], [Tok_Bottom], [Who_pass]) VALUES (" & i & ", '&iuml;', '&iuml;', '&iuml;', '&iuml;', '&iuml;')"
cmd.Execute
Next
РЕЗУЛЬТАТ
Builder (ADO) – 000444
Builder (BDE) – ЗАВИСАЕТ
VB 6.0 (ADO) – 000102
Складывается такая картина BDE c выборкой строк и обновлением работает быстрее чем ADO (правда незначительно). Visual Basic 6 не отстает от Builder 5, по скорости работы с данными, а в некоторых отношениях опережает его
Ага, интересно. Это с MSSQL. А попробуй взять Paradox, и я думаю BDE проявит себя гораздо лучше.
Не проявит. На недавно прошедшем семинаре представители борланда заявили, что BDE более не поддерживается. Наиболее перспективной на сегодняшний момент является dbGo - переделанная ADO.