找回密码
 立即注册

QQ登录

只需一步,快速开始

wzz

初级会员

23

主题

71

帖子

380

积分

初级会员

积分
380

圣诞拼拼乐微信认证勋章

wzz
初级会员   /  发表于:2021-6-11 10:45  /   查看:2505  /  回复:5
在一个flexGrid的行和列的循环中,这两句代码速度查几十倍,如何提升?下面这句进行单元格的赋值,循环要1秒
grid[row, i]= tjb.dicField[field[field.Length - 1]];  //tjb.dicField 是一个字典  

下面这句赋值一个变量40毫秒
string aa=tjb.dicField[field[field.Length - 1]].ToString();

请问赋值单元格用更高效的方法不?你们的百万级加载速度的单元格赋值如何实现?

5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-11 10:56:45
沙发
本帖最后由 Richard.Ma 于 2021-6-11 11:05 编辑

你提到的我们的百万级行数据加载速度是以百万行数据直接绑定到flexgrid 的,模式不同

你现在用的是非绑定模式,直接给单元格赋值的吧?这个循环的话肯定会慢一些,只能是根据你这边的实际项目进行一些优化,我会先测试一下,应该不会是你说的每个单元格需要1秒



回复 使用道具 举报
wzz
初级会员   /  发表于:2021-6-11 10:59:20
板凳
Richard.Ma 发表于 2021-6-11 10:56
你提到的我们的百万级行数据加载速度是以百万行数据直接绑定到flexgrid 的,模式不同

你现在用的是非绑 ...

我不是说赋值一行要1秒,是整个循环,,大概1000行,30列,下面那个整个循环就几十毫秒
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-11 11:56:34
地板
你说的字典的取值和flexgrid赋值没有可比性,请发一个重现问题的demo上来,我帮你看看是什么原因。这里测试加载速度10W行也才2秒多一点
回复 使用道具 举报
wzz
初级会员   /  发表于:2021-6-11 12:10:36
5#
Richard.Ma 发表于 2021-6-11 11:56
你说的字典的取值和flexgrid赋值没有可比性,请发一个重现问题的demo上来,我帮你看看是什么原因。这里测试 ...

你用的是绑定么?我是直接循环整个grid给每个单元格赋值,,
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-11 13:34:04
6#
就是在非绑定模式下,直接给单元格赋值,数字,或者数字转换的字符串

  1.         private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             c1FlexGrid1.Rows.Count = rowcount;
  4.             DateTime dt = DateTime.Now;
  5.             for (int i = 0; i < rowcount; i++)
  6.             {
  7.                 for (int c = 0; c < c1FlexGrid1.Cols.Count; c++)
  8.                 {
  9.                     c1FlexGrid1[i, c] =( i + c).ToString();

  10.                 }
  11.             }
  12.             toolStripTextBox1.Text = (DateTime.Now - dt).TotalMilliseconds.ToString();
  13.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部