讨论下~关于链表效率问题~

聼sohunjug 2013-05-27 05:44:51
有时因为项目需要可能不能使用数组,比如从文件一行行读取数据来处理,而文件有N多,这样会造成链表长度非常长,达到百万级以上很轻松。而每次读取一部分开始处理,中间又会有删除节点的操作,目前是将每个链表地址挂到树上来处理的,正在改成哈希表形式,可是如果达到百万级的次数达到万级,这样来回的处理,每个节点又都是new出来。程序是否会因为时常的new,delete影响效率呢? 是否还有什么更好的解决方案呢?
注:链表内容都是指针,因为每行数据大小不同,可能只有几个字符,也可能有上千个字符,所以每行数据也是malloc动态申请的。

...全文
183 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
聼sohunjug 2013-05-27
  • 打赏
  • 举报
回复
引用 9 楼 adlay 的回复:
直接把你的文件读来放到数据库里把, 一条 SQL 就把重复的数据找出来了, 何必自己去维护那么大的链表再去查找.
不能用数据库。。。
www_adintr_com 2013-05-27
  • 打赏
  • 举报
回复
直接把你的文件读来放到数据库里把, 一条 SQL 就把重复的数据找出来了, 何必自己去维护那么大的链表再去查找.
聼sohunjug 2013-05-27
  • 打赏
  • 举报
回复
引用 6 楼 sniffer12345 的回复:
[quote=引用 4 楼 sohunjug 的回复:] [quote=引用 1 楼 mujiok2003 的回复:] 频繁的内存分配与释放会降低效率,使用内存池可以改善.
内存池? 就是预先申请一块空间呗?[/quote] 找个开源的 别自己写[/quote] 额 我确实想自己写,主要也是我想自己写个关于数据库的开源库,正好用到这个了。还可以练习练习。
聼sohunjug 2013-05-27
  • 打赏
  • 举报
回复
引用 5 楼 mujiok2003 的回复:
[quote=引用 4 楼 sohunjug 的回复:] [quote=引用 1 楼 mujiok2003 的回复:] 频繁的内存分配与释放会降低效率,使用内存池可以改善.
内存池? 就是预先申请一块空间呗?[/quote] 可以预分配.也可以只是把要释放的放回池中.[/quote] 嗯,这是个方案,值得考虑。 是否还有其他方案呢? 就是实现功能。
sniffer12345 2013-05-27
  • 打赏
  • 举报
回复
引用 4 楼 sohunjug 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] 频繁的内存分配与释放会降低效率,使用内存池可以改善.
内存池? 就是预先申请一块空间呗?[/quote] 找个开源的 别自己写
mujiok2003 2013-05-27
  • 打赏
  • 举报
回复
引用 4 楼 sohunjug 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] 频繁的内存分配与释放会降低效率,使用内存池可以改善.
内存池? 就是预先申请一块空间呗?[/quote] 可以预分配.也可以只是把要释放的放回池中.
聼sohunjug 2013-05-27
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
频繁的内存分配与释放会降低效率,使用内存池可以改善.
内存池? 就是预先申请一块空间呗?
聼sohunjug 2013-05-27
  • 打赏
  • 举报
回复
引用 2 楼 adlay 的回复:
读一行处理一行多好. 啥子表都不需要了.
当然不行 是N个文件找是否有相同或不同的数据,都是随机的。
www_adintr_com 2013-05-27
  • 打赏
  • 举报
回复
读一行处理一行多好. 啥子表都不需要了.
mujiok2003 2013-05-27
  • 打赏
  • 举报
回复
频繁的内存分配与释放会降低效率,使用内存池可以改善.

64,636

社区成员

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

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