找回密码
 加入
搜索
楼主: minterz

[效率算法] 为什么官方ini读取速度如此之快

 火.. [复制链接]
 楼主| 发表于 2011-8-6 03:57:51 | 显示全部楼层
3mile 发表于 2011-8-6 00:08


搜了下,有两个对应ini的函数
GetPrivateProfileSection  
GetPrivateProfileSectionNames

能不能写个新函数,突破官方inireadSection  和 InireadSectionNames 的32767 字符限制呢?
发表于 2011-8-6 08:23:14 | 显示全部楼层
不太明白原理
发表于 2011-8-6 09:56:58 | 显示全部楼层
学习学习学习学习
发表于 2011-8-6 10:17:19 | 显示全部楼层
发表于 2011-8-6 11:14:18 | 显示全部楼层
学习了。
函数名:_IniReadSection;======================================
; 说明: 从INI结构文件中读取某个字段中的所有关键字或值。
;比_FileReadToArray之类的读入数组的方法快N~N千倍…
;    原IniReadSection函数只有在字段中的前32767字符可以被正常返回,本函数无此限制(初衷在于此)。
;    原IniReadSection函数遇到某些文件特殊的回车及换行组合会停止继续而返回,本函数会完整读出。
;    其它与原IniReadSection函数不同:不返回无关键字的值;既无关键字又无值只有等号的也不被返回。
; 语法: _IniReadSection('ini文件路径', '字段名'[, '打开模式'])
; 返回值:成功: 返回一个二维数组,其中:元素[0][0]=大小、元素[n][0]=关键字、元素[n][1]=对应的数值。
;    失败: 返回0。如INI文件读取错误或字段不存在将设置 @error=1;字段内容为空将设置 @error=2
;==============================================================
 楼主| 发表于 2011-8-6 12:04:00 | 显示全部楼层
回复  minterz

\_iniread
happytc 发表于 2011-8-6 10:17



    这个没什么用,100w行数据的时候,连_iniread返回的都是错误的.
这个同样是正则匹配的,速度没有优势...

还没有_StringBetween方便呢...

官方的iniread机制已经出来了,就是调用win api

希望有高手用win api 写个突破限制的出来
发表于 2011-8-7 16:01:11 | 显示全部楼层
高人啊都是
发表于 2011-8-7 16:01:55 | 显示全部楼层
官方地址谁发一下
发表于 2011-8-7 16:02:49 | 显示全部楼层
10块
发表于 2011-8-7 23:47:17 | 显示全部楼层
学习呀
发表于 2011-8-8 11:09:29 | 显示全部楼层
厉害! 还是只能佩服啊
发表于 2011-8-12 12:46:14 | 显示全部楼层
ini 毕竟不是txt,是有索引的,文件的信息排布方式并不是你肉眼看到的那样,实际上真正的文件读取方式是先读取索引,根据索引(能储存数据在字符串中的位置)直接跳转,也就是你不查找的直接跳过了!
举个例子,你搜索一本书的某个信息的时候,他会先读目录,根据目录直接跑到制定的页面,本身这个函数只知道前面有多少个单位的数据被跳过了,但是究竟跳过了什么他根本就没读!
发表于 2011-8-14 14:23:23 | 显示全部楼层
非常不错,当然官方的速度快了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 01:23 , Processed in 0.073394 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表