三种数据存放方法哪种比较快?

ctxhhm 2006-04-03 12:18:46
写一个中文分词算法的时候用到了一个几十M的字典文件,当搜索某个词的时候下面我试了三种方法,结果跟我开始想的有点不同.

字典文件的格式是: 词汇 词频

方法一:用输入输出流每次都读取字典文件

方法二:把字典以结构体数组的方式保存在内存中,搜索的时候遍历结构体数组

方法三:用容器map保存,用map自带的方法遍历

大家说说哪个比较快
...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beginnow 2006-04-07
  • 打赏
  • 举报
回复
目前.我所见过的hash,这个可以问一下海量
ares0906 2006-04-07
  • 打赏
  • 举报
回复
我觉得第二种方法是最快的,查找数组只要两次定位就够了,偏移+数组起始地址。

你保存的东西是有序的话,那么用二分查找应该很快的。
ctxhhm 2006-04-07
  • 打赏
  • 举报
回复
上面写错了,应该是结构体最快

1:用时40

2:用时6

3:用时8

注意:我的目的只是查找某个词在这些数据里出现过没有
ctxhhm 2006-04-07
  • 打赏
  • 举报
回复
测试了下

1:用时40

2:用时259

3:用时8

楼上说的hashmap我还没试,奇怪的是结构体为什么这么耗时啊,也差太远了把
skywoody 2006-04-03
  • 打赏
  • 举报
回复
这么大的东西用hash_map吧
我原先做过数据量是10w的时候测过时间
hash_map和map在效率上相差5倍以上
睡在床板下_ 2006-04-03
  • 打赏
  • 举报
回复
lz做的 和我现在做的一样,也要统计词汇和词频,我采用的是 第二种方法

第一种感觉就比较慢....
第三种如果要统计高频的词汇估计很麻烦,,所以我用了 第二种用vector,,加上sort算法,应该还可以, 速度估计不是很快,,但是很好的满足了我的需要

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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