首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了循环之外,将数组中的值与指令中的其他值进行匹配的最快方法是什么

除了循环之外,将数组中的值与指令中的其他值进行匹配的最快方法是什么
EN

Stack Overflow用户
提问于 2016-09-11 07:28:01
回答 3查看 51关注 0票数 0

我有一个用蛋白质id填充的数组,并且我在字典中有蛋白质名称和id。我要打印出它在阵列上的每一个蛋白质。这是我用来做这件事的方法,但它不够快,不能做大量的蛋白质。

代码语言:javascript
复制
string txt= "****** ID : {0} , Protien Name : {1} ******";
for (int i = 0; i < codonarray.Length; i++)
{
    if (codonarray[i] != null)
    {
        if (dictionaryproteins.TryGetValue(codonarray[i], out myvalue))
        { 
            Console.WriteLine(txt, codonarray[i], myvalue.name);
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2016-09-11 08:01:55

您正在使用的字典查找的性能为O(1) (请参阅:Big O notation)。这意味着一次查找所需的时间几乎是恒定的,并且不依赖于字典的大小。无论字典中有10个还是10,000,000个条目,都无关紧要。

您希望打印数组的每个元素。所以无论如何你都需要遍历数组。您可以在某些LINQ构造中隐藏循环,但循环仍然在那里,不能被优化。这是一个O(n)运算。

这意味着您已经在以最佳方式进行匹配。组合性能(循环+查找)为O(n)。你不能做得更好。

如果您执行I/O操作,那么这很可能是性能问题的根源。试着最小化它们。使用缓冲、缓存等。

仅打印一个摘要或每第n行打印一次。如果仅打印就花费了太多时间,那么读取输出需要多长时间?

票数 1
EN

Stack Overflow用户

发布于 2016-09-11 08:00:04

控制台的打印速度相对较慢。将数据写入文件而不是控制台。

票数 0
EN

Stack Overflow用户

发布于 2016-09-11 08:06:10

代码语言:javascript
复制
string[] fileContent = File.ReadAllLines(@"Phrases\Phrases.txt");

然后编码什么是filecontent,在你的例子中是蛋白质信息。

这是一个8980行的文件示例,我将其用于语音识别,以打印到文本框中,您可以根据需要对其进行更改。打印速度真的很快。

代码语言:javascript
复制
string[] fileContent0 = File.ReadAllLines(@"Phrases\Phrases.txt");
_recognizer.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices(fileContent0))));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39431487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档