找回密码
 立即注册

QQ登录

只需一步,快速开始

laonawuli

银牌会员

39

主题

146

帖子

3383

积分

银牌会员

积分
3383

活字格认证

laonawuli
银牌会员   /  发表于:2011-11-3 13:36  /   查看:6175  /  回复:5
看了版主发的一篇帖子,详解了当给Cell的Value与Text赋值时的效率问题,也知道了在赋值时Value的效率要比Text高。
那请问,在从这两个属性中取值的时候,Value与Text的效率谁高呢?

5 个回复

正序浏览
iceman
社区贡献组   /  发表于:2011-11-4 14:05:00
6#

回复 5# laonawuli 的帖子

:strong:
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-4 10:50:00
5#
原帖由 iceman 于 2011-11-3 18:06:00 发表
你好,以 SetValue 和 SetText 效率比较为例, 可以通过以下代码进行测试:
[code]
private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Stopwatch test = new System.Diagnostics.Stopwatch()

OK 已测,事实证明 Value的效率,无论是取值还是赋值,都要比Text快。取值的时候,就算ToString(),也要比Text快很多很多。
一个25万次的无意义循环中,Value.ToString() 的执行速度是250毫秒,Text的执行速度是1300毫秒。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-3 18:06:00
地板

回复 3# laonawuli 的帖子

你好,以 SetValue 和 SetText 效率比较为例, 可以通过以下代码进行测试:
  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             System.Diagnostics.Stopwatch test = new System.Diagnostics.Stopwatch();
  4.             test.Start();
  5.             for (int i = 0; i < 500; i++)
  6.             {
  7.                 for (int j = 0; j < 500; j++)
  8.                 {
  9.                     this.fpSpread1.Sheets[0].SetValue(i, j, i + j);
  10.                 }
  11.             }
  12.             test.Stop();
  13.             MessageBox.Show(test.ElapsedMilliseconds.ToString());
  14.         }
  15.         private void button2_Click(object sender, EventArgs e)
  16.         {
  17.             System.Diagnostics.Stopwatch test = new System.Diagnostics.Stopwatch();
  18.             test.Start();
  19.             for (int i = 0; i < 500; i++)
  20.             {
  21.                 for (int j = 0; j < 500; j++)
  22.                 {
  23.                     this.fpSpread1.Sheets[0].SetText(i, j, (i + j).ToString());
  24.                 }
  25.             }
  26.             test.Stop();
  27.             MessageBox.Show(test.ElapsedMilliseconds.ToString());
  28.         }
复制代码
可以通过修改以上测试内容进行测试。
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-3 16:55:00
板凳
原帖由 iceman 于 2011-11-3 15:07:00 发表
你好,取值时,取 value 属性效率较高。


hello,麻烦看一下以下两个问题:
1、本来就是想取Cell上显示的字符串的值,使用如下A、B两种情况,哪种效率高?
  A:
string str="Hello";
  for(int i=0;i<100;i++)
{
    if(str==Cell.Text)
    {
     .......
    }
}

B:
string str="Hello";
  for(int i=0;i<100;i++)
{
    if(str==Cell.Value.ToString())//这里肯定要ToString(),因为Value是Object无法直接和str比较。
    {
     .......
    }
}


2、以下两种情况,谁的效率高?

  A:
decimal i=0m;
  for(int i=0;i<100;i++)
{
    i=Convert.ToDecimal(Cell.Value);
}

B:
decimal i=0m;
  for(int i=0;i<100;i++)
{
    i=Convert.ToDecimal(Cell.Text);
}
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-3 15:07:00
沙发

回复 1# laonawuli 的帖子

你好,取值时,取 value 属性效率较高。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部