纯数据的类跟RECORD谁快? ( 积分: 50 )

  • 主题发起人 主题发起人 空小子
  • 开始时间 开始时间

空小子

Unregistered / Unconfirmed
GUEST, unregistred user!
速度比较:
纯数据的类跟RECORD谁快?
C++的应该是一样快吧(我说的是开辟,和访问)
我很不懂,下面是我对开辟空间的比较的,不知道是否正确,大家教教我!顺便说说访问这些数据的时候谁快?

1.纯数据的类:
TObj=class
no:integer;
age:integer;
sex:boolean;
name:string;
end;

Obj:TObj;
for i:=0 to 1000000do
//结果速度很慢
begin
Obj:=ttoken.Create;
end;

2.RECORD:
PObj=^TObj
TObj=record
no:integer;
age:integer;
sex:boolean;
name:string;
next: PObj;
end;

Obj:PObj;
for i:=0 to 1000000do
//结果速度教快
begin
New(Obj);
end;

我这样比较是错误的,是这样的,我学习和实践《编译原理》,使用的是第一种(纯数据的类)和TLIST类结合来存储记号信息,但是似乎非常慢!根本原因是我对DELPHI不熟悉!希望高手指点一二,相信我会有所长进的!
 
速度比较:
纯数据的类跟RECORD谁快?
C++的应该是一样快吧(我说的是开辟,和访问)
我很不懂,下面是我对开辟空间的比较的,不知道是否正确,大家教教我!顺便说说访问这些数据的时候谁快?

1.纯数据的类:
TObj=class
no:integer;
age:integer;
sex:boolean;
name:string;
end;

Obj:TObj;
for i:=0 to 1000000do
//结果速度很慢
begin
Obj:=ttoken.Create;
end;

2.RECORD:
PObj=^TObj
TObj=record
no:integer;
age:integer;
sex:boolean;
name:string;
next: PObj;
end;

Obj:PObj;
for i:=0 to 1000000do
//结果速度教快
begin
New(Obj);
end;

我这样比较是错误的,是这样的,我学习和实践《编译原理》,使用的是第一种(纯数据的类)和TLIST类结合来存储记号信息,但是似乎非常慢!根本原因是我对DELPHI不熟悉!希望高手指点一二,相信我会有所长进的!
 
和C++中不同
DELPHI中任何类都是从TObject中继承,负担相比RECORD大得多了
创建实例的Create就是Tobject类提供的类函数,而且还是虚拟的
这时你说谁快?
 
在访问上面速度没有多大差异,但内存分配/释放上面普通的record应该要快一些的,尤其对于批量分配的情况,可以一次性分配的:GetMem(Obj, 1000000 * Sizeof(TObj));那比你分配1000000次肯定要快不知多少倍啦
 
后退
顶部