try
  Reg:=TRegistry.Create;
  reg.RootKey:=Hkey_Local_Machine;
  reg.OpenKey('software\测试',true);
  for i:=1 to 70 do
    for J:=1 to 70 do
      reg.WriteString('i:='+IntToStr(I),'dd');
  reg.CloseKey;
finally
  reg.free;
end;
以上操作在本人计算机上需要240毫秒
============================================================
try
  Reg:=TRegistry.Create;
  reg.RootKey:=Hkey_Local_Machine;
  reg.OpenKey('software\测试',true);
  for i:=1 to 4900 do
    reg.WriteString('i:='+IntToStr(I),'dd');
  reg.CloseKey;
finally
  reg.free;
end;
以上操作却需要20秒钟
============================================================
非常郁闷,请大家告诉小弟是什么原因还有,我从一个注册表文件中读取内容然后再写入注册表(因为我要对某些内容修改,所以不
用regedit.exe /s 的方式导入,数据全是 Reg_SZ字符型)
请问怎么样会速度最快?
用 Retistry类吗?

解决方案 »

  1.   

    这种程序的执行过程想通过for循环来得到时间是不现实的
    因为执行一个指令的时间完全不被我们只到
    所以建议用timer来实现其次,个人觉得双重循环应该比单重循环运行的时间长
    因为当双重循环的时候,当i=x的时候,会一直等待j执行完一轮后再继续+1;
    所以时间上不如单重循环(不停得执行)
      

  2.   

    不能用timer,因为我下一个操作要等到他执行完成,所以,timer非常慢!当然双重循环比单重循环肯定慢,
    但是事实上上面的例子就是特殊,可能跟registry类的实现有关,所以非常郁闷