在VC与Delphi上测试速度的代码很简单,如下:
//Delphi代码//////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
dc : HDC;
dw :DWORD;
i :integer;
begin
dw:=GetTickCount(); dc:=GetDc(self.Handle);
for i:=0 to 500 do
begin
Ellipse(dc,i,10,200,120);
Ellipse(dc,i,120,200,250);
TextOut(dc,i,250,'123456789',10);
end;
ReleaseDc(self.Handle, dc); dw:=GetTickCount()-dw;
ShowMessage('运行时间:'+Inttostr(dw));
end;
//VC代码/////////////////////////////////////////////
void CFileDlg::OnButton1()
{
char buffer[20];
DWORD dw;
dw=::GetTickCount(); HDC dc=::GetDC(this->m_hWnd);
for(int i=0;i<=500;i++)
{
::Ellipse(dc,i,10,200,120);
::Ellipse(dc,i,120,200,250);
::TextOut(dc,i,250,"123456789",10);
}
::ReleaseDC(this->m_hWnd,dc); dw=::GetTickCount()-dw;
sprintf(buffer,"运行时间:%d\n",dw);
::MessageBox(this->m_hWnd,buffer,"OK",1);
}
在DELPHI5中我全部用API的方法写了一个窗口程序在这个窗口中执行速度是与VC6相同的,我想可能是VCL窗口的某些内部机制影响了绘图速度,请大家帮忙研究一下。
//Delphi代码//////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
dc : HDC;
dw :DWORD;
i :integer;
begin
dw:=GetTickCount(); dc:=GetDc(self.Handle);
for i:=0 to 500 do
begin
Ellipse(dc,i,10,200,120);
Ellipse(dc,i,120,200,250);
TextOut(dc,i,250,'123456789',10);
end;
ReleaseDc(self.Handle, dc); dw:=GetTickCount()-dw;
ShowMessage('运行时间:'+Inttostr(dw));
end;
//VC代码/////////////////////////////////////////////
void CFileDlg::OnButton1()
{
char buffer[20];
DWORD dw;
dw=::GetTickCount(); HDC dc=::GetDC(this->m_hWnd);
for(int i=0;i<=500;i++)
{
::Ellipse(dc,i,10,200,120);
::Ellipse(dc,i,120,200,250);
::TextOut(dc,i,250,"123456789",10);
}
::ReleaseDC(this->m_hWnd,dc); dw=::GetTickCount()-dw;
sprintf(buffer,"运行时间:%d\n",dw);
::MessageBox(this->m_hWnd,buffer,"OK",1);
}
在DELPHI5中我全部用API的方法写了一个窗口程序在这个窗口中执行速度是与VC6相同的,我想可能是VCL窗口的某些内部机制影响了绘图速度,请大家帮忙研究一下。
解决方案 »
- 请教:怎样对已打开的EXCEL表,设置页眉和页脚?
- 我的家在东北松花江上
- 好高兴喔!昨天在成都喜来登酒店听了李维的一个讲座,关于.Net程序和Win32程序互相调用的专题
- 怎么样将DBGRID中的数据导入WORD中(形成和一样的表格)?用DBGRID还是用QUERY做呢?thanks.
- 如果我在数据库里的一个field里面放的是0,1,2,3四种数字,而我要在dbgrid里面对应显示的是的市内,省内,省外,国外四种,怎么办
- 怎样用fastreport打印这样的报表??(高分在线等待)
- SQL.Text := 'select top 1 * from zhu';//为什么这个模块需要把头一位的资料拉出来
- 救救我吧!!!!!长沙的过来一下!
- SPComm的怪问题,请大虾解决
- 各位大侠,请了,我怎么用DELPHI自带的制作工具把目录也打进去?请教!!
- 关于鼠标的一个问题,请高手看一下
- 怎样修改DBGrid中字符串的值?
在VC与Delphi上测试速度的代码很简单,如下:
//Delphi代码//////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
dc : HDC;
dw :DWORD;
i :integer;
begin
dc:=GetDc(self.Handle);
dw:=GetTickCount();
for i:=0 to 500 do
begin
Ellipse(dc,i,10,200,120);
Ellipse(dc,i,120,200,250);
TextOut(dc,i,250,'123456789',10);
end;
dw:=GetTickCount()-dw;
ReleaseDc(self.Handle, dc);
ShowMessage('运行时间:'+Inttostr(dw));
end;
//VC代码/////////////////////////////////////////////
void CFileDlg::OnButton1()
{
char buffer[20];
DWORD dw;
HDC dc=::GetDC(this->m_hWnd);
dw=::GetTickCount();
for(int i=0;i<=500;i++)
{
::Ellipse(dc,i,10,200,120);
::Ellipse(dc,i,120,200,250);
::TextOut(dc,i,250,"123456789",10);
}
dw=::GetTickCount()-dw;
::ReleaseDC(this->m_hWnd,dc);
sprintf(buffer,"运行时间:%d\n",dw);
::MessageBox(this->m_hWnd,buffer,"OK",1);
}