📄 main.pas
字号:
if cbODAC.Checked then begin
ResODAC := MasterDetailTest(OraQuery, OraQuery1, i*50);
Chart.Series[0].AddXY(i*50, ResODAC/1000, '', clTeeColor);
end;
// BDE
if cbBDE.Checked then begin
ResBDE := MasterDetailTest(BDEQuery, BDEQuery1, i*50);
Chart.Series[1].AddXY(i*50, ResBDE/1000, '', clTeeColor);
end;
// ADO
if cbADO.Checked then begin
ResADO := MasterDetailTest(ADOQuery, ADOQuery1, i*50);
Chart.Series[2].AddXY(i*50, ResADO/1000, '', clTeeColor);
end;
// dbExpress
if cbdbExpress.Checked then begin
ResdbExp := MasterDetailTest(BorlandSQLQuery, BorlandSQLQuery1, i*50);
Chart.Series[3].AddXY(i*50, ResdbExp/1000, '', clTeeColor);
end;
if ResODAC > 0 then begin
mBDE := ((i - 1)*mBDE + ResBDE/ResODAC)/i;
mADO := ((i - 1)*mADO + ResADO/ResODAC)/i;
mdbExp := ((i - 1)*mdbExp+ ResdbExp/ResODAC)/i;
lbODAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
lbBDE.Update;
lbADO.Update;
lbdbExpress.Update;
end;
Chart.Update;
end;
end;
procedure TfmMain.btSPCallTestClick(Sender: TObject);
var
i:integer;
ResODAC,ResBDE,ResADO,ResdbExp: integer;
mBDE,mADO,mdbExp: double;
const
Step = 50;
begin
Chart.Title.Text.Text := 'StoredProc Call Test';
Chart.Series[0].Clear;
Chart.Series[1].Clear;
Chart.Series[2].Clear;
Chart.Series[3].Clear;
Chart.BottomAxis.Minimum := 0;
Chart.BottomAxis.Maximum := 11 * Step;
mBDE := 0;
mADO := 0;
mdbExp := 0;
for i := 1 to 10 do begin
ResODAC := 0;
ResBDE := 0;
ResADO := 0;
ResdbExp := 0;
meResult.Lines.Add('---------------');
// ODAC
if cbODAC.Checked then begin
ResODAC := SPCallTest(OraStoredProc, i*Step);
Chart.Series[0].AddXY(i*Step, ResODAC/(Step * 10), '', clTeeColor);
end;
// BDE
if cbBDE.Checked then begin
ResBDE := SPCallTest(BDEStoredProc, i*Step);
Chart.Series[1].AddXY(i*Step, ResBDE/(Step * 10), '', clTeeColor);
end;
// ADO
if cbADO.Checked then begin
ResADO := SPCallTest(ADOStoredProc, i*Step);
Chart.Series[2].AddXY(i*Step, ResADO/(Step * 10), '', clTeeColor);
end;
// dbExpress
if cbdbExpress.Checked then begin
ResdbExp := SPCallTest(BorlandSQLStoredProc, i*Step);
Chart.Series[3].AddXY(i*Step, ResdbExp/(Step * 10), '', clTeeColor);
end;
if ResODAC > 0 then begin
mBDE := ((i - 1)*mBDE + ResBDE/ResODAC)/i;
mADO := ((i - 1)*mADO + ResADO/ResODAC)/i;
mdbExp := ((i - 1)*mdbExp + ResdbExp/ResODAC)/i;
lbODAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
lbBDE.Update;
lbADO.Update;
lbdbExpress.Update;
end;
Chart.Update;
end;
end;
procedure TfmMain.btDataLoadingTestClick(Sender: TObject);
const
Step = 1000;
var
i:integer;
ResODAC,ResBDE,ResADO,ResdbExp: integer;
mBDE,mADO,mdbExp: double;
begin
Chart.Title.Text.Text := 'DataLoading Test';
Chart.Series[0].Clear;
Chart.Series[1].Clear;
Chart.Series[2].Clear;
Chart.Series[3].Clear;
Chart.BottomAxis.Minimum := 0; //-100;
Chart.BottomAxis.Maximum := Step*6;//11;
mBDE := 0;
mADO := 0;
mdbExp := 0;
for i := 1 to 5 do begin
ResODAC := 0;
ResBDE := 0;
ResADO := 0;
ResdbExp := 0;
meResult.Lines.Add('---------------');
OraSession.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
// ODAC
if cbODAC.Checked then begin
ResODAC := DataLoadingTest(OraLoader, i*Step);
Chart.Series[0].AddXY(i*Step, ResODAC/1000, '', clTeeColor);
end;
OraSession.Commit;
OraSession.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
Database.StartTransaction;
// BDE
if cbBDE.Checked then begin
ResBDE := DataLoadingTest(BDEQuery, i*Step);
Chart.Series[1].AddXY(i*Step, ResBDE/1000, '', clTeeColor);
end;
Database.Commit;
OraSession.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
// ADO
if cbADO.Checked then begin
ResADO := DataLoadingTest(ADOQuery, i*Step);
Chart.Series[2].AddXY(i*Step, ResADO/1000, '', clTeeColor);
end;
// dbExpress
OraSession.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
if cbdbExpress.Checked then begin
ResdbExp := DataLoadingTest(BorlandSQLQuery, i*Step);
Chart.Series[3].AddXY(i*Step, ResdbExp/1000, '', clTeeColor);
end;
if ResODAC > 0 then begin
mBDE := ((i - 1)*mBDE + ResBDE/ResODAC)/i;
mADO := ((i - 1)*mADO + ResADO/ResODAC)/i;
mdbExp:= ((i - 1)*mdbExp+ ResdbExp/ResODAC)/i;
lbODAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
lbBDE.Update;
lbADO.Update;
lbdbExpress.Update;
end;
Chart.Update;
end;
end;
procedure TfmMain.edFetchRowsExit(Sender: TObject);
var
Connected: boolean;
begin
try
OraQuery.FetchRows := StrToInt(edFetchRows.Text);
OraQuery1.FetchRows := StrToInt(edFetchRows.Text);
Connected := Database.Connected;
Database.Close;
Database.Params.Values['ROWSET SIZE'] := edFetchRows.Text;
if Connected then begin
Database.LoginPrompt := False;
Database.Open;
Database.LoginPrompt := True;
end;
ADOQuery.CacheSize := StrToInt(edFetchRows.Text);
ADOQuery1.CacheSize := StrToInt(edFetchRows.Text);
BorlandSQLConnection.Params.Values['RowsetSize'] := edFetchRows.Text;
finally
edFetchRows.Text := IntToStr(OraQuery.FetchRows);
end;
end;
procedure TfmMain.btCreateClick(Sender: TObject);
begin
scCreate.Execute;
end;
procedure TfmMain.btDropClick(Sender: TObject);
begin
scDrop.Execute;
end;
procedure TfmMain.cbMarkClick(Sender: TObject);
begin
Chart.Series[0].Marks.Visible := cbMark.Checked;
Chart.Series[1].Marks.Visible := cbMark.Checked;
Chart.Series[2].Marks.Visible := cbMark.Checked;
Chart.Series[3].Marks.Visible := cbMark.Checked;
end;
procedure TfmMain.OraLoaderPutData(Sender: TOraLoader);
var
i: integer;
begin
for i := 1 to LoadCount do begin
Sender.PutColumnData(0, i, i);
Sender.PutColumnData(1, i, '01234567890123456789');
end;
end;
procedure TfmMain.cbNetClick(Sender: TObject);
begin
OraSession.Connected := false;
OraSession.Options.Net := cbNet.Checked;
OraSession.Connected := true;
end;
procedure TfmMain.cbOCI7Click(Sender: TObject);
begin
OraSession.Options.UseOCI7 := cbOCI7.Checked;
end;
procedure TfmMain.btnMultiExecutingClick(Sender: TObject);
var
i:integer;
ResODAC,ResBDE,ResADO,ResdbExp: integer;
mBDE,mADO,mdbExp: double;
begin
Chart.Title.Text.Text := 'MultiExecuting Test';
Chart.Series[0].Clear;
Chart.Series[1].Clear;
Chart.Series[2].Clear;
Chart.Series[3].Clear;
Chart.BottomAxis.Minimum := 0;
Chart.BottomAxis.Maximum := 5500;
mBDE := 0;
mADO := 0;
mdbExp := 0;
for i := 1 to 10 do begin
ResODAC := 0;
ResBDE := 0;
ResADO := 0;
ResdbExp := 0;
meResult.Lines.Add('---------------');
// ODAC
if cbODAC.Checked then begin
ResODAC := MultiExecutingTest(OraSQL, i*500);
Chart.Series[0].AddXY(i*500, ResODAC/1000, '', clTeeColor);
end;
// BDE
if cbBDE.Checked then begin
ResBDE := MultiExecutingTest(BDEQuery, i*500);
Chart.Series[1].AddXY(i*500, ResBDE/1000, '', clTeeColor);
end;
// ADO
if cbADO.Checked then begin
ResADO := MultiExecutingTest(ADOQuery, i*500);
Chart.Series[2].AddXY(i*500, ResADO/1000, '', clTeeColor);
end;
// dbExpress
if cbdbExpress.Checked then begin
ResdbExp := MultiExecutingTest(BorlandSQLQuery, i*500);
Chart.Series[3].AddXY(i*500, ResdbExp/1000, '', clTeeColor);
end;
if ResODAC > 0 then begin
mBDE := ((i - 1)*mBDE + ResBDE/ResODAC)/i;
mADO := ((i - 1)*mADO + ResADO/ResODAC)/i;
mdbExp := ((i - 1)*mdbExp + ResdbExp/ResODAC)/i;
lbODAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
lbBDE.Update;
lbADO.Update;
lbdbExpress.Update;
end;
Chart.Update;
end;
end;
procedure TfmMain.FormDestroy(Sender: TObject);
begin
btDisconnectClick(nil);
end;
procedure TfmMain.btnInsertPostClick(Sender: TObject);
var
i:integer;
ResODAC,ResBDE,ResADO,ResdbExp: integer;
mBDE,mADO,mdbExp: double;
const
Step = 50;
begin
Chart.Title.Text.Text := 'Insert / Post Test';
Chart.Series[0].Clear;
Chart.Series[1].Clear;
Chart.Series[2].Clear;
Chart.Series[3].Clear;
Chart.BottomAxis.Minimum := 0;
Chart.BottomAxis.Maximum := 11 * Step;
mBDE := 0;
mADO := 0;
mdbExp := 0;
for i := 1 to 10 do begin
ResODAC := 0;
ResBDE := 0;
ResADO := 0;
ResdbExp := 0;
meResult.Lines.Add('---------------');
// ODAC
if cbODAC.Checked then begin
ResODAC := InsertPostTest(OraTable, i*Step);
Chart.Series[0].AddXY(i*Step, ResODAC/10 * Step, '', clTeeColor);
end;
// BDE
if cbBDE.Checked then begin
ResBDE := InsertPostTest(BDETable, i*Step);
Chart.Series[1].AddXY(i*Step, ResBDE/10 * Step, '', clTeeColor);
end;
// ADO
if cbADO.Checked then begin
ResADO := InsertPostTest(ADOTable, i*Step);
Chart.Series[2].AddXY(i*Step, ResADO/10 * Step, '', clTeeColor);
end;
// dbExpress
if cbdbExpress.Checked then begin
ResdbExp := InsertPostTest(BorlandClientDataSet, i*Step);
Chart.Series[3].AddXY(i*Step, ResdbExp/10 * Step, '', clTeeColor);
end;
if ResODAC > 0 then begin
mBDE := ((i - 1)*mBDE + ResBDE/ResODAC)/i;
mADO := ((i - 1)*mADO + ResADO/ResODAC)/i;
mdbExp := ((i - 1)*mdbExp + ResdbExp/ResODAC)/i;
lbODAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
lbBDE.Update;
lbADO.Update;
lbdbExpress.Update;
end;
Chart.Update;
end;
end;
procedure TfmMain.cbSetInternalNameClick(Sender: TObject);
var
AConnected: boolean;
AConnectPrompt: boolean;
begin
AConnected := OraSession.Connected;
AConnectPrompt := OraSession.ConnectPrompt;
OraSession.Connected := false;
OraSession.ConnectPrompt := false;
if cbSetInternalName.Checked then
OraSession.InternalName := 'ODAC'
else
OraSession.InternalName := '';
OraSession.Connected := AConnected;
OraSession.ConnectPrompt := AConnectPrompt;
end;
procedure TfmMain.cbResultLogClick(Sender: TObject);
begin
meResult.Visible := cbResultLog.Checked;
Splitter1.Visible := cbResultLog.Checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -