items属性的combo_【内存消耗问题】DataGridViewComboboxColoumn关于Items属性和DataSource属性的性能开销问题...
【问题场景】:新建窗体应用程序,Form中添加1个DataGridView控件,并新增1列数据(列类型为DataGridViewComboboxColoumn)。下拉列表绑定15000条选项值,表格添加15000行数据行。
【问题对比】:分别使用Items属性和DataSource属性绑定下拉列表数据,打开Windows任务管理器,观察内存消耗。
【测试结果】:(1)情况一:使用DataSource绑定数据,内存开销很小,且速度快,当CtrlC操作时,GetClipboardContent()消耗内存快速增加许多;情况二:使用Items绑定数据,内存开销较大,且速度慢,当CtrlC操作时,GetClipboardContent()消耗内存变化不大
(2)两种情况下,内存消耗的最大值借相差不大
【!!!问题!!!】:内存开销花在什么地方了?如何保持用DataSource绑定数据的小开销和快速,又能避免GetClipboardContent()操作内存消耗过大?
【示例代码】:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestComboBoxClipBoard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.KeyDown += new KeyEventHandler(dataGridView1_KeyDown);
}
void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
//打断点,观察GetClipboardContent语句执行时,内存消耗情况
DataObject data = dataGridView1.GetClipboardContent();
}
}
private void button1_Click(object sender, EventArgs e)
{
List rowList = new List();
List items = new List();
int itemsCount = 15000;
for (int index = 0; index < itemsCount; index++)
{
items.Add(index.ToString());
}
//DataSource和Items的区别
//使用DataSource【新建表内存消耗不大,CtrlC操作后观察可知内存消耗变大】
(dataGridView1.Columns[0] as DataGridViewComboBoxColumn).DataSource = items.ToArray();
//使用Items【新建表内存消耗大,CtrlC操作后内存变化不大】
//(dataGridView1.Columns[0] as DataGridViewComboBoxColumn).Items.AddRange(items.ToArray());
for (int index = 0; index < itemsCount; index++)
{
DataGridViewRow row = new DataGridViewRow();
object[] para = { "123" };
row.CreateCells(dataGridView1, para);
rowList.Add(row);
}
dataGridView1.Rows.AddRange(rowList.ToArray());
}
}
}
items属性的combo_【内存消耗问题】DataGridViewComboboxColoumn关于Items属性和DataSource属性的性能开销问题...相关推荐
- python内存消耗大吗_如何减少python内存的消耗?
标签: Python 打算删除大量涉及像C和C++语言那样的复杂内存管理.当对象离开范围,就会被自动垃圾收集器回收.然而,对于由Python 开发的大型且长期运行的系统来说,内存管理是不容小觑的事情. ...
- [Android 性能优化系列]内存之终极篇--降低你的内存消耗
原文地址:http://developer.android.com/training/articles/memory.html 拒绝在 Bitmap 上浪费你的内存 当你加载一张 Bitmap 的时候 ...
- 详细分析冒泡排序、选择排序、插入排序(最好/最坏/平均时间复杂度(有序度)、稳定性、内存消耗(原地排序))
如何分析排序算法 最好.最坏.平均时间复杂度 算法的时间复杂度,会随着排序集合的有序性而改变.我们需要分析不同算法在不同数据下的表现 最好时间复杂度:在完全有序的情况下的时间复杂度(满有序度) 最坏时 ...
- c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程
很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程. -- Magesh Maruthamuthu(作者) 很多次,你可能遇见过系统 ...
- 一行代码搞定 Python 逐行内存消耗分析
作者 | 费弗里 来源 | Python大数据分析 我们即将学习的是:一行代码分析Python代码行级别内存消耗. 很多情况下,我们需要对已经写好的Python程序的内存消耗进行优化,但是一段代码在运 ...
- Docker中的Java内存消耗优化以及我们如何使用Spring Boot
---- / BEGIN/ ---- 如果您的Docker容器占用太多内存而无法达到最佳性能,请阅读下文以了解一个团队如何找到解决方案. 最近,我所在的团队在部署我们的微服务(AWS上Docker中的 ...
- mariadb 10.1查看per connection内存消耗
在mariadb 10.1版本中,在information_schema.processlist表中,新增了几个字段,其中有一个memory_used,其记录的是连接的内存消耗. 同时新增了一个状态变 ...
- 高cpu_实用脚本:检查高 CPU / 内存消耗进程 | Linux 中国
本教程中包含两个脚本,它们可以帮助你确定 Linux 上高 CPU/内存消耗进程的运行时间. • 来源:linux.cn • 作者:Magesh Maruthamuthu • 译者:geekpi • ...
- Redis的内存消耗
内存使用统计 # Server redis_version:3.0.7 # Memory used_memory:7270580648 - used_memory: Total number of b ...
最新文章
- 【技术人员访谈数学王子】塞德里克·维拉尼的多面人生
- 对应node版本_安装Node.js教程
- SqlServer2008备份与还原(完整图示版)
- SQL2008安装出现问题invoke---beginInvoke
- Pytorch——Dropout
- 一个草根站长的创业故事之选择
- 5分钟入门ER/Studio
- 风险预测模型_【期刊导读】侯金林教授团队发表全球首个跨病因和跨种族的慢性肝病患者肝癌风险预测模型——aMAP评分...
- 使用LaTeX的语言风格植入MathType公式的两种办法
- 小米手机如何更换铃声和微信提示音
- 暨王博士关于学术论文写作指导总结
- LSV(Loca Space Viewer)学习记录
- saprk 提交远程作业_如何准备远程作业搜索
- 爬虫攻守道 - 2023最新 - Python Selenium 实现 - 数据去伪存真,正则表达式谁与争锋 - 爬取某天气网站历史数据
- python——实现鼠标与键盘监听与事件处理
- 同花顺编程入门(一)
- 深度学习之数据处理方法概述
- c语言精灵宝可梦对战游戏,精灵宝可梦究极日月模拟器金手指代码大全
- H 指数 (citations[index] > h 才能符合条件)
- LSTM对比Bi-LSTM的电力负荷时间序列预测(Matlab)
热门文章
- 时隔16年,Science再次发布“全世界最前沿的125个科学问题”!
- 男导师的妻子叫“师母”,那么女导师的丈夫该怎么称呼?
- 当支持向量机遇上神经网络:这项研究揭示了SVM、GAN、Wasserstein距离之间的关系...
- 985 博士:导师是院士,直到毕业,我们都没单独说过一句话...
- CVPR2020人脸防伪检测挑战赛冠军方案开源
- 初学Python,我给你总结了常见的17个错误
- 优秀程序员和普通程序员都是怎样过完一天的
- 3年国奖、一作9篇SCI,完美逆袭的中大博士坦言自己也曾濒临挂科
- Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)
- Python assert断言函数及用法