Literacy 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Literacy 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Literacy 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Literacy 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Literacy 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 未知
开发语言 C#
操作系统 Windows
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 红薯
适用人群 未知
收录时间 2014-11-17

软件简介

Literacy使用IL指令生成方法委托,性能方面,在调用次数达到一定量的时候比反射高很多

当然,用IL指令生成一个方法也是有时间消耗的,所以在只使用一次或少数几次的情况,不但不能提高性能,反而会使性能下降,所以使用场合需要自己把握

下面是在我的电脑上做的一些测试(因机器配置不同会有少许误差)

测试次数 Literacy 反射
10 16ms 0ms
100 15ms 0ms
1K 16ms 5ms
1W 16ms 50ms
10W 23ms 505ms
100W 87ms 5149ms

示例代码:

static void Main(string[] args)
{
    User u = new User();
    CodeTimer.Initialize();
    CodeTimer.Time("MethodInfo", 1000000, () => GetName2(u));
    CodeTimer.Time("Literacy", 1000000, () => GetName(u));
    CodeTimer.Time("dynamic", 1000000, () => GetName3(u));
}

static ObjectProperty prop;

public static object GetName(object obj)
{
    if (obj == null) throw new ArgumentNullException("obj");
    if (prop == null)
    {
        prop = new Literacy(obj.GetType()).Property["Name"];
        if (prop == null) throw new NotSupportedException("对象不包含Name属性");
    }
    return prop.GetValue(obj);
}

static MethodInfo getName;

public static object GetName2(object obj)
{
    if (obj == null) throw new ArgumentNullException("obj");
    if (getName == null)
    {
        getName = obj.GetType().GetProperty("Name").GetGetMethod();
    }
    return getName.Invoke(obj, null); //缓存了反射Name属性
}

public static object GetName3(object obj)
{
    if (obj == null) throw new ArgumentNullException("obj");
    return ((dynamic)obj).Name;
}
展开阅读全文

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2019/03/17 15:25

大英二_综合教程(单词)

vulnerable  1.易受伤的,脆弱的  2.易受影响的;易受攻击(或责难)的;无防御的 philosophy  哲学 cynic  愤世嫉俗的人;冷嘲热讽的人 candidacy  候选(或候补)资格;候选人(或候补者)地位 Senate  1.[用作单] (美国国会和州议会及法国、澳大利亚等国的)参议院  2.[用作单] (古罗马的)元老院  3.[C] (某些大学的)理事会,评议会 patriotic  爱国的,有爱国心的 collapse  倒坍;塌下 interfer...

0
0
发表了博客
2018/06/28 19:37

技术的极限(3): 像科学家一样思考

上一篇:技术的极限(2): 概念应该基于事实 下一篇:技术的极限(4): 解决不可靠的网络的挑战 目录 ** 0x01 蜜蜂有0的概念 ** 0x02 We Should Teach All Students, in Every Discipline, to Think Like Scientists ** 0x03 You’re Drawing Lightning Wrong ** 0x04 GDPR(General Data Protection Regulation) ** 0x05 虚构与非虚构 ** 0x06 域界门纲目科属种 ** 0x07 动物眼中的世界 ** 0x08 Building the Computer Literacy Pro...

0
0
发表了博客
2018/11/21 17:38

Charles Dickens【查尔斯·狄更斯】

Charles Dickens In 1812, the year Charles Dickens was born, there were 66 novels published in Britain. 1812年,查尔斯·狄更斯出生,那一年英国出版了66本小说。 People had been writing novels for a century-most experts date the first novel to Robinson Crusoe in 1719-but nobody wanted to do it professionally. 人们写小说已经有一个世纪之久了--大部分专家认为第一本小说是1719年的《鲁宾逊漂流记》 --但是没...

0
0
发表于大前端专区
2016/10/31 13:31

推荐:制作地图的网站和工具

推荐:制作地图的网站和工具 RECOMMENDED SITES AND TOOLS FOR MAPPING AJD GEOSPATIAL CONCEPTS http://gisconsultingservices.com/ AJD Geospatial Concepts specializes in the organization, analysis, and mapping of geographic data for urban and regional planning; utility, environmental, infrastructure, and transportation management; business and political analysis; and 3-D topographic and flood analysi...

0
0
2015/06/05 13:15

causing outrage No shake

True deciduous hedges are less popular on the West Coast, possibly because of our devotion to evergreen plants saw it run off the track and there was a puff of smoke Health Brian Dawkins Broncos Jersey determines the quality of our lives Duration is unknownYou even find Authentic Dennis Smith Jersey leather sofas and sectionals for 60 per cent off and a few appliances at bargain basement prices...

0
0
发表于程序人生专区
2020/12/05 00:01

Hacker News 简讯 2020-12-05

最后更新时间: 2020-12-05 23:00 Radicle: A peer-to-peer alternative to GitHub - (radicle.xyz) Radicle:GitHub的对等替代方案 得分:334 | 评论:125 std::visit is everything wrong with modern C++ (2017) - (bitbashing.io) STD::访问是现代C++的一切错误(2017) 得分:38 | 评论:11 Exotic Programming Ideas - (stephendiehl.com) 奇异的编程思想 得分:51 | 评论:16 Your Smart TV is probably ignoring your PiHole ...

0
0
发表于大前端专区
2015/06/02 13:12

Carolina Law Enforcement

is the new animated comedy joining the Sunday ANIMATION DOMINATION lineup this fall It's the kind of restaurant that should makes foodies' hearts beat faster, especially given the food court and fast food competition in its vicinity2 billion net worth would leave Chris Hansen's group that is attempting to bring an NBA team back to SeattleWith an ankle can be like a shoeboxTanker 910 proved too ...

0
0
发表于程序人生专区
2020/10/01 01:01

Hacker News 简讯 2020-10-01

最后更新时间: 2020-10-01 23:00 “Airlines look like they make money from flights, but ” - (twitter.com) 航空公司看起来像是从飞机上赚钱,但是 得分:37 | 评论:38 USB-C Was Supposed to Simplify Our Lives. Instead, It’s a Total Mess - (debugger.medium.com) USB-C本应简化我们的生活。相反,这真是一团糟 得分:170 | 评论:184 We Learn Faster When We Aren’t Told What Choices to Make - (scientificamerican...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
10 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部