关于INI文件读取效率的问题

Harryfin 2006-10-10 02:18:38
如我要查找Sec_BBB域中键为Key_BBB的值,对于以下两种结构,其效率是一样的吗? (就是想知道其读取时,是逐行搜索Section,还是有特殊方法一下找到Section的)

结构一:
==================================
在同一个文件内:
[Sec_AAA]
(100项数据)


[Sec_BBB]
(99项数据)
Key_BBB = xxxxx

结构二:
==================================
结构一中的两个Section各在一个文件里,其具体Section结构相同,现在直接读取Sec_BBB所在的文件.
...全文
1442 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harryfin 2006-10-11
  • 打赏
  • 举报
回复
试了下ini和数据库的比较,均以连续操作该种文件最后一条记录(共17000多条记录)2000次为例,ini只用了7秒左右,而数据库竟然用了40秒! 我只能用我的数据库是Access来安慰自己了 ToT 看来还是用ini好了...

XML还没试验,不知道效果如何.
kb82008 2006-10-10
  • 打赏
  • 举报
回复
Delphi中读INI的函数ReadString代码如下:
function TIniFile.ReadString(const Section, Ident, Default: string): string;
var
Buffer: array[0..2047] of Char;
begin
SetString(Result, Buffer, GetPrivateProfileString(PChar(Section),
PChar(Ident), PChar(Default), Buffer, SizeOf(Buffer), PChar(FFileName)));
end;
其中函数GetPrivateProfileString根据MSDN的解释,应该是对INI文件逐行匹配直到匹配成功
所以拆分成多个文件会快一些,不过就像楼上说的,现在的硬件多读几百一千行的txt,时间几乎可以忽略,除非楼主是个钻牛角尖的性能致上的狂人^__^
OO_is_just_P 2006-10-10
  • 打赏
  • 举报
回复
那为什么不用xml或者数据库?
Harryfin 2006-10-10
  • 打赏
  • 举报
回复
天,刚回去仔细看了下ini,原来匹配项过10000了.. -_-|
Harryfin 2006-10-10
  • 打赏
  • 举报
回复
嗯,不过我的这个程序比较特殊,需要和ini文件进行大量的交互(mapping),而且匹配项均达几千项左右,因此把这个问题提了出来.

代码感觉比以前有了改进,但是速度没加快多少,我怀疑和外部文件的频繁交互有关.此外我想,如果先把ini读进stringlist里再搜,能不能加快速度呢?
do2008 2006-10-10
  • 打赏
  • 举报
回复
以目前的硬件条件,计算机的速度来说,

几百行的ini,也就是txt文件来说,它的读取速度,可以忽略不计

也就是说,这种情况下,没有必要分成多个ini文件,

反倒是增加了代码中的逻辑
do2008 2006-10-10
  • 打赏
  • 举报
回复
那当然~~~
hangzhou_hammer 2006-10-10
  • 打赏
  • 举报
回复
楼上4可星的 说话应该可以信(有根据的吧~?!)
王集鹄 2006-10-10
  • 打赏
  • 举报
回复
拆分成多个文件快一些,但如果数据量在千行以内可以忽略

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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