C#三种创建对象方法所需时间比较。。。。。
C#创建对象的三种方法 new()、Activator、Assembly,接下来通过代码直接来看看运行的速度。。。。
首先,先看看三种创建对象实例的方法:
//new();
public static T New<T>() where T : new()
{
return new T();
} //Activator创建实例
public static T Act_Create<T>()
{
return Activator.CreateInstance<T>(); ;
} //Assembly创建实例
public static T Ass_Create<T>()
{
return (T)Assembly.Load(_assemblyPath).CreateInstance(_assemblyPath + _typeName);
}
接下来直接来看,创建10000个对象三种方法各自所需要的时间:
//Console.Write("通过New创建10000个对象实例所需的时间:");
Console.WriteLine(TimeWatcher.Watch(() =>
{
for (var i = ; i < ; i++)
{
var s_instance = ConvertToModel.New<StudyProgram.Common.Student>();
}
}));
//Console.Write("通过Activator创建10000个对象实例所需的时间:");
Console.WriteLine(TimeWatcher.Watch(() =>
{
for (var i = ; i < ; i++)
{
var s_instance = ConvertToModel.Act_Create<StudyProgram.Common.Student>();
}
}));
//Console.Write("通过Assembly创建10000个对象实例所需的时间:");
Console.WriteLine(TimeWatcher.Watch(() =>
{
for (var i = ; i < ; i++)
{
var s_instance = ConvertToModel.Ass_Create<StudyProgram.Common.Student>();
}
}));
运行时间图如下:

根据上述运行结果,发现new(),Activator时间差不多少,但是Assembly运行时间是上面两个方法10倍之多。。。。
虽然三种方法的运行效率不一样,但存在即合理,不一定速度快的就是最合适的,适合自己的才是最好。
C#三种创建对象方法所需时间比较。。。。。的更多相关文章
- Liunx 环境下vsftpd的三种实现方法(超详细参数)
以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...
- StringBuilder的三种删除方法比较
分别用一千万次循环来比较StringBuilder的三种删除方法所用时间 未避免偶然性,再循环一百次来比较总时间 --主类 public class StringBuilderRemove { pub ...
- C#使用DataSet Datatable更新数据库的三种实现方法
本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...
- selenium webdriver三种等待方法
webdriver三种等待方法 1.使用WebDriverWait from selenium import webdriverfrom selenium.webdriver.common.by im ...
- RFID标签天线的三种制作方法
在RFID标签中,天线层是主要的功能层,其目标是传输最大的能量进出标签芯片.RFID天线是按照射频识别所要求的功能而设计的电子线路,将导电银浆或导电碳浆网印在PVC.PC或PET上,再与面层.保护层和 ...
- 【转】selenium webdriver三种等待方法
原文:https://www.cnblogs.com/lgh344902118/p/6015593.html webdriver三种等待方法 1.使用WebDriverWait from seleni ...
- (java)selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待
selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待 本例包括窗口最大化,刷新,切换到指定窗口,后退,前进,获取当前窗口url等操作: import java. ...
- map的三种遍历方法!
map的三种遍历方法! 集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ /* * To change this template, choose Tools | Te ...
- JS高级---三种创建对象的方式
JS高级---三种创建对象的方式 字面量的方式 (实例对象) 调用系统的构造函数 自定义构造函数方式 //创建对象---->实例化一个对象,的同时对属性进行初始化 var per=new Per ...
随机推荐
- 使用selenium实现模拟淘宝登陆
from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.w ...
- Linux内核同步:per_cpu变量
per cpu变量相关函数和宏 DEFINE_PER_CPU_SHARED_ALIGNED(type,name):静态分配per_cpu数组,数组名为name,结构类型为type DEFINE_PER ...
- js 根据数组分组动态生成table(相同项合并)
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/ ...
- 【数值计算方法】二分法求根的C++简单实现
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下: 1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ. 2 求区间(a,b)的中点c. 3 计算f(c). (1) 若f( ...
- 【tips】ORM - SQLAlchemy操作MySQL数据库
优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...
- 【Codeforces 340D】Bubble Sort Graph
[链接] 我是链接,点我呀:) [题意] 让你根据冒泡排序的规则 建立一张图 问你这张图的最大独立子集的大小 [题解] 考虑a[i]会和哪些点连边? 必然是在a[i]左边且比它大的数字以及在a[i]右 ...
- noip模拟赛 排序
分析:因为序列是不严格单调的,所以挪动一个数其实就相当于把这个数给删了.如果a[i] < a[i-1],那么可以删掉a[i],也可以删掉a[i-1](!如果没考虑到这一点就只有90分),删后判断 ...
- POJ 3061 Subsequence 尺取
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14698 Accepted: 6205 Desc ...
- Kotlin和Java名称的由来
Kotlin和Java名称的由来 学习了:http://blog.jobbole.com/111249/ JetBrains由战斗民族开发: Java来源于印尼群岛中的Java岛: Kotlin来源于 ...
- 【Hibernate学习】 ——ORM(四)再次认识实体继承
在信用办时.做失信.守信.黑名单这一块的时候.先把原来的需求看了看.紧接着就開始设计实体,这一块大部分都是同样的信息,所以就设计了一个实体,而且用一个状态标识出来是失信.守信还是黑名单. 在之后的改动 ...