我有一个C#程序,它正在提取一个大约的.csv文件.42,000行长.文件中的所有数据都存储如下:
Zipcode,City,State
我将所有信息都分成三个不同的列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();
小智.. 5
你应该做的是使用ListView.BeginUpdate()
和ListView.EndUpdate()
在ListView中添加任何内容之前和之后.第二件事是使用ListView.AddRange()
而不是ListView.Add()
.通过使用Add方法,每次使用时都会重绘ListView.但是,使用ListView.AddRange()
您只会重绘一次.这应该为你优化一点.
你应该做的是使用ListView.BeginUpdate()
和ListView.EndUpdate()
在ListView中添加任何内容之前和之后.第二件事是使用ListView.AddRange()
而不是ListView.Add()
.通过使用Add方法,每次使用时都会重绘ListView.但是,使用ListView.AddRange()
您只会重绘一次.这应该为你优化一点.