gpt4 book ai didi

c# - 在 C# 中针对大文件优化 Listview

转载 作者:太空狗 更新时间:2023-10-29 20:13:38 26 4
gpt4 key购买 nike

我有一个 C# 程序正在提取一个大约 .csv 文件。 42,000 行长。文件中的所有数据存储如下:

zip 、城市、州

我将所有信息提取到 listview 中的三个不同列中。

目前,将此数据带入我的程序大约需要 30 - 50 秒。我的问题是如何才能更好地优化我的代码以缩短时间?

以下是我的代码片段。注释的代码是我以前尝试过的代码,但是没有成功减少时间,因此我以更易于阅读的方式重写了它。

 //These are globally declared.
lvZip.Columns.Add("Zipcode", 150, HorizontalAlignment.Left);
lvZip.Columns.Add("City", 150, HorizontalAlignment.Left);
lvZip.Columns.Add("State", 150, HorizontalAlignment.Left);
lvZip.View = View.Details;

lvZip.Items.Clear();

//string dir = System.IO.Path.GetDirectoryName(
// System.Reflection.Assembly.GetExecutingAssembly().Location);

//string path = dir + @"\zip_code_database_edited.csv";
//var open = new StreamReader(File.OpenRead(path));

//foreach (String s in File.ReadAllLines(path))
//{
// Zipinfo = s.Split(',');
// Zipinfo[0] = Zipinfo[0].Trim();
// Zipinfo[1] = Zipinfo[1].Trim();
// Zipinfo[2] = Zipinfo[2].Trim();
// lvItem = new ListViewItem(Zipinfo);
// lvZip.Items.Add(lvItem);
//}
//open.Close();

StreamReader myreader = File.OpenText(path);
aLine = myreader.ReadLine();

while (aLine != null)
{
Zipinfo = aLine.Split(',');
Zipinfo[0] = Zipinfo[0].Trim();
Zipinfo[1] = Zipinfo[1].Trim();
Zipinfo[2] = Zipinfo[2].Trim();
lvItem = new ListViewItem(Zipinfo);
lvZip.Items.Add(lvItem);
aLine = myreader.ReadLine();
}
myreader.Close();

最佳答案

您应该做的是在将任何内容添加到 ListView 之前和之后使用 ListView.BeginUpdate()ListView.EndUpdate()。第二件事是使用 ListView.AddRange() 而不是 ListView.Add()。通过使用 Add 方法,您将在每次使用时重新绘制 ListView。但是,使用 ListView.AddRange() 您只会重绘一次。这应该会为您稍微优化一下。

关于c# - 在 C# 中针对大文件优化 Listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20389238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com