我想写一个 Delphi 简单测试 执行速度 的程式

quickcccc 2009-01-08 10:41:30
(A) 我完全不会写 Delphi

(B)

想办到以下功能

(A)

TForm1 下有一个 TForm1.Button1 和 TForm1.Edit1

(B)

按下 Button1 后开始执行

P := 1234.566;



For w = 1 To 1000000 DO BEGIN

Q := Q + P * 12 + P /33;  

END;

(C) 最后把执行 For 所花费的秒数 传给 TForm1.Edit1

...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzmhero 2009-01-08
  • 打赏
  • 举报
回复
溢出了,但不会出异常。
quickcccc 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Corn1 的回复:]
Delphi(Pascal) codevarTime1, Time2: Longint;
p, q: Double;
w: Integer;beginP :=1234.566;
Time1 :=GetTickCount;
For w=1To1000000DO
Q :=Q+P*12+P/33;
Time2 :=GetTickCount;
Edit1.Text :=IntToStr(Time2-Time1);end;
[/Quote]

请问 Delphi 执行时

会不会检查

"阵列索引是否 超出范围" ,

"整数是否 超出范围"

例如

w1: integer;
w2: integer;

Q: integer;

For w1 := 1 to 10000 do begin
For w2 := 1 to 10000 do begin
Q:= Q +1000000000; // 加到让 Q 数值超过 Interger 容许范围时 , Delphi 是否会发出 "警讯"
end;
end;
Corn1 2009-01-08
  • 打赏
  • 举报
回复
晕,我2楼的代码有问题,最后应该是:
Edit1.Text := IntToStr((Time2 - Time1) div 1000); 因为是秒数,所以用div取整
Corn1 2009-01-08
  • 打赏
  • 举报
回复

var
Time1, Time2: Longint;
p, q: Double;
w: Integer;
begin
P := 1234.566;
Time1 := GetTickCount;
For w = 1 To 1000000 DO
Q := Q + P * 12 + P /33;
Time2 := GetTickCount;
Edit1.Text := IntToStr(Time2 - Time1);
end;
gzmhero 2009-01-08
  • 打赏
  • 举报
回复

var
dtBegin:TDateTime;
...
begin
p:=1234.566;
dtBegin:=now;
For w = 1 To 1000000 DO BEGIN
Q := Q + P * 12 + P /33;
Edit1.Text:=IntToStr(DateTimeToUnix(now)-DateTimeToUnix(dtBegin));

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧