VB/C#按键分组对象 - 性能(内存)问题

Tom*_*asi 2 .net c# vb.net performance logging

我正在读取日志文件.

我的目标是显示网站上10个最受欢迎的请求网址.

一种方法是读取所有日志条目并将每个URL保存到字典.字典将URL作为密钥,将访问次数作为值.如果字典中存在URL,则该URL的Key的值增加+1,否则添加值为1的新Key/Value对.

处理完成后,字典按值排序,并显示前10个条目.

这可能会起作用,但是当处理具有数千个不同页面URL的网站的日志文件(想想查询字符串)时,它可能会导致严重的内存问题.

由于我只需要前10个条目,是否有办法避免将所有URL放入内存并仍然获得前10个URL +访问次数?

SLa*_*aks 5

对于大多数理智的数据集,这不会导致严重的内存问题.
除非您在Google工作,否则您不会遇到任何内存问题.
过早优化是邪恶的.

如果在实现它之后,您有内存问题,则应切换到SQL数据库.

编辑 :(响应您的评论)
10,000个不同的500个字符的字符串将使用10,000*500*4字节= 20MB,这是非常少的.(它还会更多地用于字符串管理和字典本身,但总共不到1MB)
直到你开始获得数百万个独特的 500字符URL,你没有什么可担心的.