注意Activator.CreateInstance两个重载方法的性能
今天扩展一个Type的扩展方法New:
public static object New(this Type type, params object[] args)
{
Guard.ArgumentNull(type, "type");
return Activator.CreateInstance(type, args);
}
然后想到了测试一下其性能,所以就和直接使用Activator.CreateInstance方法作一下比较:
public void TestCreateInstance()
{
Console.WriteLine(TimeWatcher.Watch(() =>
{
for (var i = ; i < ; i++)
{
var o = Activator.CreateInstance(typeof(TestSerializeClass1));
}
}));
Console.WriteLine(TimeWatcher.Watch(() =>
{
for (var i = ; i < ; i++)
{
var o = typeof(TestSerializeClass1).New();
}
}));
}
这似乎是多此一举的无用测试,却着实使我大吃一惊!
00:00:00.0104130
public static object New(this Type type, params object[] args)
{
Guard.ArgumentNull(type, "type");
if (args == null || args.Length == )
{
return Activator.CreateInstance(type);
} return Activator.CreateInstance(type, args);
}
再次测试的时间如下:
00:00:00.0020176
注意Activator.CreateInstance两个重载方法的性能的更多相关文章
- C# 页面向controller中跳转匹配方法的时候,当controller中有两个重载方法时候,不发生跳转
在ajax中的URL跳向controller一个方法时候,controller中有两个重载的方法,ajax不发生跳转,当删除另外一个方法之后,正常跳转. 不知道,是我自己写的有问题,还是control ...
- FastMethod和PropertyUtils两种反射方法的性能比较
这两个类都提供反射方法的实现,性能对比如下: 循环条件是:1亿次 结论:PropertyUtils提供的getXXX和setXXX反射方法的性能是FastMethod的三倍 以下是测试方法: 首先是F ...
- jedis set 的四个重载方法(byte[]的四个自动忽略)
方法定义如下: 1.String set(String key, String value) 2.String set(String key, String value, String nxxx) 3 ...
- C# Activator.CreateInstance()方法使用
C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...
- 关于Assembly.CreateInstance()与Activator.CreateInstance()方法
于Assembly.CreateInstance()与Activator.CreateInstance()方法 动 态创建类对象,大多是Activator.CreateInstance()和Activ ...
- (转) C# Activator.CreateInstance()方法使用
C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...
- C#中Activator.CreateInstance()方法用法分析
本文实例讲述了C#中Activator.CreateInstance()方法用法. Activator 类 包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用. C#在类工厂中 ...
- Activator.CreateInstance 方法 (Type) 的用法
转自:http://www.cnblogs.com/lmfeng/archive/2012/01/30/2331666.html Activator.CreateInstance 方法 (Type) ...
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
EF Core使用SQL调用返回其他类型的查询 假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法 ...
随机推荐
- paip.Log4j配置不起作用的解决
paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...
- 学习IT资源分享,欢迎各位知道的学习IT资源前来分享
1:排序不是按照名次,随机排序 慕课学习网https://www.imooc.com/ 腾讯课堂 https://ke.qq.com/ 柠檬学院 http://bjlemon.edusoho.cn/ ...
- Python 实现有道翻译命令行版
一.个人需求 由于一直用Linux系统,对于词典的支持特别不好,对于我这英语渣渣的人来说,当看英文文档就一直卡壳,之前用惯了有道词典,感觉很不错,虽然有网页版的但是对于全站英文的网页来说并不支持.索性 ...
- 环回接口(loopback interface)的新认识
背景 前些日子在IDC实验docker的时候,为了避免与公司网络冲突,将bridge设置为127.x网段的IP,原以为这样就OK,后来发现在访问container内部的服务的时候无法访问.开始以为ip ...
- 安装配置NFS服务
超级好的配置centos下服务的链接 http://www.server-world.info/en/note?os=CentOS_6&p=nfs http://linux.vbird.org ...
- 关于ORACLE的重启命令
有时候数据死了,或者没有监听,不必重启机子,重启一下数据库服务行了,下面是linux下的启动步骤,没有在win下执行过,可能也可以!以oracle9i为例(1) 以oracle身份登录数据库,命令:s ...
- Java 多线程(2)-Executor
public interface Executor{ void executor(Runnable command); } 如上所写,Executor实际上是一个接口,他提供了唯一的接口方法execu ...
- MySQL的慢查询分析
慢查询分析日最初是用来捕获比较“慢”的查询,在mysql5.1 + 版本中,慢查询的功能被加强,可以通过设置long_query_time为0来捕获所有的查询,而且查询的响应时间已经可以做到微妙级别. ...
- Base: 一种 Acid 的替代方案
原文链接: BASE: An Acid Alternative Pdf下载链接: Base 数据库 ACID,都不陌生:原子性.一致性.隔离性和持久性,这在单台服务器就能搞定的时代,很容易实现,但是到 ...
- vim之插入
进入vim插入模式,我们熟知的有: 字符位置插入: i 在光标之前插入 a 在光标之后追加 行位置插入: A 在一行的结尾处追加 I 在一行的开头处插入 o 在光标所在位置的 ...