• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

测试C#类型转换效率问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
using System;
using System.Diagnostics;
 
namespace TestTypeChange
{
  public class MyClass{
      public int id = 0;
      public string name = "";
      public MyClass(int _id,string _name){
          id = _id;
          name = _name;
      }
  }
 
  class MainClass
  {
      public static void Main (string[] args)
      {
          Stopwatch stopwatch;
          object obj_ptr = null;
          MyClass myclass = new MyClass (0, "cjane");
          MyClass ref_myclass = null;
          int count = 100000000;
 
          stopwatch = Stopwatch.StartNew();
          for (int i = 0; i < count; i++)
              ref_myclass = myclass;
          stopwatch.Stop();
          Console.WriteLine("class to class: " + stopwatch.Elapsed);
 
          stopwatch = Stopwatch.StartNew();
          for (int i = 0; i < count; i++)
              obj_ptr = myclass;
          stopwatch.Stop();
          Console.WriteLine("class to object: " + stopwatch.Elapsed);
 
 
          stopwatch = Stopwatch.StartNew();
          for (int i = 0; i < count; i++)
              ref_myclass = (MyClass)obj_ptr;
          stopwatch.Stop();
          Console.WriteLine("object to class: " + stopwatch.Elapsed);
 
          int val = 100;
          int cp_val = 0;
 
          stopwatch = Stopwatch.StartNew();
          for (int i = 0; i < count; i++)
              ref_myclass = myclass;
          stopwatch.Stop();
          Console.WriteLine("value to value: " + stopwatch.Elapsed);
 
          stopwatch = Stopwatch.StartNew();
          for (int i = 0; i < count; i++)
              obj_ptr = val;
          stopwatch.Stop();
          Console.WriteLine("value to object: " + stopwatch.Elapsed);
 
 
          stopwatch = Stopwatch.StartNew();
          for (int i = 0; i < count; i++)
              cp_val = (int)obj_ptr;
          stopwatch.Stop();
          Console.WriteLine("object to value: " + stopwatch.Elapsed);
 
      }
  }
}
 
 
 
测试结果:
    class to class: 00:00:00.3463484
    class to object: 00:00:00.3520921
    object to class: 00:00:00.3760758
    value to value: 00:00:00.3303531
    value to object: 00:00:01.9317834
    object to value: 00:00:00.3482110    
 
 
测试得出C# 引用类型间的转换几乎和赋值时候差不多,性能损耗几乎忽略不计
但如果是整型值类型间的转换,把整型值类型转为object的时候,性能比较低
有兴趣的可以试试下字符串与object间的转换
 
 
 
 
 
 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#Http请求接口数据的两种方式GetandPost发布时间:2022-07-14
下一篇:
一个C#获取高精度时间类(调用APIQueryP*)发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap