0

我在我的程序中添加了自动完成选项。它工作正常,但执行速度非常慢。我正在向我的收藏中添加东西,这部分正在减慢我的程序。

while ((line = sr.ReadLine()) != null)
{

     Line main = new Line();
     main.LeftColumn = Time;
     main.Middle= returnValue;
     main.RightColumn = User_Description;
     list3.Add(main);

    //Here I add everything to my collection
     if (main.Middle.Source.Device != null)
     {
           suggest.Add(main.Middle.Source.Device);
     }
     if (main.Middle.ID.Device != null)
     {
           suggest.Add(main.Middle.ID.Device);
     }
}

Line我将我的东西添加到集合中,我必须通过显示我的类的对象来访问它,而main不是Middle这个类的字段,该字段与其他类连接,Source或者ID其中有我想要添加到集合中的字符串字段。基本上,当我使用的文件很小(最多 700 行)时,它的运行速度不会很慢,但是当我使用例如(3000 行)的文件时,需要一些时间来添加所有这些东西,在这个过程中我可以不要使用我的应用程序。

我怎样才能让它更快地工作?可能吗?如果有什么不清楚的地方,尽管问我,我会尽力解释更多。

4

1 回答 1

0

您将文件缩减到最小大小。如果文件大小小于 1 MB,请检查文件大小。我认为对于 3000 行,它会比这更少。一旦执行此操作,就可以将文件加载到内存中并将其保存在集合中,然后对变量执行操作并尝试一次性读取所有文件,而不是逐行读取(最好使用 File.ReadAllLines() 一次读取)。在后台加载窗口时执行此操作。我认为这将极大地改变您的应用程序性能。

如果可能,请使用 Dictionary 而不是 List,因为从字典中访问元素比 list 快得多。我不知道你的应用程序逻辑,所以不能说你是否可以使用字典。所以做出相应的决定。

请使用文件中的正确数据检查内存限制。如果这不能解决您的问题,请提供有关您的代码的更多详细信息。我将尝试模拟并帮助您。

于 2013-08-19T06:54:59.417 回答