C#开发-ListView.CheckedItems的效率
来源:互联网 发布:js更改button的值 编辑:程序博客网 时间:2024/06/05 10:06
看一段代码:
StringCollection arr = new StringCollection();
for (int i=0;i<=lvwExtents.CheckedItems-1;i++)
{
arr.Add(lvwExtents.CheckedItems[i].Text);
}
for (int i=0;i<=lvwExtents.CheckedItems-1;i++)
{
arr.Add(lvwExtents.CheckedItems[i].Text);
}
看上去没什么问题。可是今天我运行时,发现速度缓慢得像蜗牛一般。我的ListView有两千多条记录,全部处于选中状态。速度无法忍受,估计秒种处理的记录只有两三条。
可是换成了以下代码后,就完全正常了,飞快的就执行完了。
ListViewItem item;
for (int i=0;i<=this.lvwExtents.Items.Count-1;i++)
{
item = this.lvwExtents.Items[i];
if (item.Checked)
arr.Add(item.Text);
}
for (int i=0;i<=this.lvwExtents.Items.Count-1;i++)
{
item = this.lvwExtents.Items[i];
if (item.Checked)
arr.Add(item.Text);
}
奇怪吧。也许是因为每次循环时调用的lvwExtents.CheckedItems[i].Text代码,都会重新检测哪些项处于选中的状态的缘故吧。
CheckedItems 属性返回一个集合,该集合包含控件中的所有选中项。
第一种实现方法 每次循环它都会去获取lvwExtents中的所有选中项.然后再取得当前i的索引值.可以这样讲其时间复杂度为O(N2)(因为CheckedItems属性封装了其取得所有选中的算法).而第二种方法其时间复杂度为O(N).
下面是第三种实现方法:楼主可以试试,其性能将会更好.
IList mList=lvwExtents.CheckedItems;
int ItemCount=mList.Count;
for(int i=0;i<ItemCount;i++)
{
arr.Add(((ListViewItem)mList[i])).Text)
}
转自http://www.cnblogs.com/watsonyin/archive/2006/11/02/548197.html#1521894
- C#开发-ListView.CheckedItems的效率
- C#开发-ListView.CheckedItems的效率
- ListView的效率提高
- 安卓开发:提升ListView的运行效率
- ListView的滑动效率问题
- 提升ListView的运行效率
- ListView运行效率的优化
- 提升ListView的运行效率
- 提升ListView的运行效率
- 提高ListView的显示效率
- 提升ListView的运行效率
- 提升ListView的运行效率
- C#开发的WEB开发的简单框架 节省开发信息管理系统时间 提高开发效率
- 软件开发的效率
- 开发人员的开发效率
- 开发团队的效率
- 开发团队的效率
- 开发团队的效率
- SQL Server 2000和SQL Server 2005的分区
- Fedora Linux 11 正式版发布
- 动态div,动态假iframe在该div下以遮住select
- LINUX基本命令
- Spring.Net 框架(二)
- C#开发-ListView.CheckedItems的效率
- Spring.Net 框架(三)
- [双语阅读]英国:让路人搭便车意愿降低
- 常见插值方法介绍
- 数 据 库 设 计 经 验 谈
- 生女比生男更幸福?
- Debug
- [双语阅读]老板为奥巴马做披萨 美国餐馆生意火爆
- 走光 wardrobe malfunction