【问题标题】:Efficient way of counting every occurrences of every words from a URL [duplicate]计算URL中每个单词的每次出现的有效方法[重复]
【发布时间】:2016-03-25 00:07:27
【问题描述】:

我正在做类似的事情,用户将输入任何 url 并获得文本。

然后将解析文本并计算单词。

我目前正在阅读微软的这篇文章: https://msdn.microsoft.com/en-us/library/bb546166.aspx

我现在可以得到文本,我目前正在尝试一种有效的方法来计算每个单词。

文章示例需要搜索数据,但我需要搜索每个单词而不是特定单词。

这是我的想法:

  1. 获取文本并将其转换为字符串
  2. 拆分它们(分隔符)并存储在数组中
  3. 遍历数组,然后检查它的每一次出现。

这样会有效吗?

【问题讨论】:

  • 噢,好的,谢谢
  • 看看正则表达式。这可以一次调用搜索整个页面。
  • 为什么效率甚至很重要?您是否每秒执行数十亿次?

标签: c#


【解决方案1】:

使用 Linq

如果你有少量数据,可以对空间进行拆分,然后创建一个组

 var theString = MethodToGetStringFromUrl(urlString);

 var wordCount = theString
                    .Split(' ')
                    .GroupBy(a=>a)
                    .Select(a=>new { word = a.Key , Count = a.Count() });

查看fiddle了解更多工作副本

一些实验和结果

在 .net 中搞砸了一点,使用正则表达式实际上降低了性能并增加了使用的内存量,请参阅 here 了解我在说什么

其他选择

因为您是从 Url 获取请求,所以在将流转换为字符串然后执行搜索之前在流内部进行搜索可能会更高效

除非需要,否则不要优化 为什么你需要找到一种高效的方法来做这个计数?您是否遇到任何问题或只是认为您会遇到问题,一个好的经验法则通常是不要过早优化,有关更多信息,请查看有关该主题的这个好问题: When is optimisation premature?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多