惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
T
Tor Project blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
爱范儿
爱范儿
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
Vercel News
Vercel News
美团技术团队
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
L
LangChain Blog
IT之家
IT之家
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
Hacker News: Ask HN
Hacker News: Ask HN
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
量子位
Project Zero
Project Zero
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
T
Tenable Blog
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 叶小钗
Know Your Adversary
Know Your Adversary
L
Lohrmann on Cybersecurity
C
Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
I
InfoQ
P
Privacy & Cybersecurity Law Blog
Spread Privacy
Spread Privacy
Martin Fowler
Martin Fowler
腾讯CDC
S
Security @ Cisco Blogs
F
Fortinet All Blogs

博客园 - 阿修

Entity FrameWork 单表对多实体 让Entity Framework启动不再效验__MigrationHistory表 Entity Framework搜索指定字段解决方案 Linux+Mono+WebService:CS1703: An assembly with the same identity--mscorlib 获取某年中第几个礼拜的第一天的函数 DataTable.Rows.Remove(row) 与 DataTable.Rows[i].Delete()区别 [转摘]Lucene学习总结之一:全文检索的基本原理 Lucene.net根据Sort走到了不同的类处理 VPN Connections and Default Gateways - 阿修 牛!帮EXE等执行文件压缩的工具 进程通讯的多种方式 三星I9008删除程序清单 质量保证漫漫谈之QA、QC、QM的关系与区别 敏捷宣言 多维角度聊聊结对编程 在Windows下编译和.NET运行MemCached Serv-U服务器中文乱码问题的解决 请小心 管理学中四件不要做的事情
.NET编程中的部分效率问题
阿修 · 2011-04-18 · via 博客园 - 阿修

1.         父类要精简,没有必要的方法和属性不要写在上面。因为即使是私有的方法和属性,对于子类来说,虽然无法继承,但是这些内容也会存储在子类中,只是我们无法使用而已。这样就造成了子类占用了许多无谓的空间。

2.         类中的静态字段没有倍乘成本。既我们对那些在类中需要经常使用的,或是创建成本比较大的字段,要尽量用静态字段。而如果用非静态的字段,如果出现莫个类创建一万次的话,那就会创建一万个该字段。会非常影响效率。

3.         静态方法并不比实例方法性能好。因为在.NET中,无论是静态方法还是实例方法在代码段中只是存储一份,也就是不会出现上面所说的实例字段出现的倍乘问题。所以我们在编写类的时候,不用从倍乘方面考虑方法的动静态的问题。

4.         虚函数存在效率问题。因为无论是静态方法还是动态方法,在编译器中都是执行Jmp到确定的地址,而虚函数的地址是不确定的,需要后期绑定,所以对程序效率有所影响。

5.         慎用Struct类型作为参数进行传递。在编写程序的时候我们有时会考虑是用类还是用结构的问题,虽然在.NET中结构没有垃圾回收的成本(当然垃圾回收的成本也不会因为少一个类而降低多少),但是当作为参数传递时需要内存拷贝,这样的成本是比较大的。但是如果我们仅仅是在方法里使用结构,而不是作为参数进行传递则没有关系。

6.         将对象置为NULL,来诱发垃圾收集器收集是无效率的。我们常常在程序中创建某个类,使用后,在结束的位置用 xxx=null;来试图释放内存,其实常常垃圾收集器已经在该类使用后将其收集了,这样做多此一举。

7.         尽量不要自己写析构函数。由于.NET中的垃圾收集器已经很有效了,所以我们没有必要一定要亲历亲为的去写析够函数来释放我们不放心的对象或变量。而且析够函数的效率比较低,反倒会起到不好的作用。

8.         垃圾收集器虽然效率高,但是它也有“欺软怕硬”的特点。对于那些“抱团”的对象(与其他对象有纵横交错的联系,如DataSet),其收集的效果没有简单对象好(我们是不是可以帮它一下呢?和前面的第6点需要辨正的来看问题?)。

9.         “接口”、“委托”、“反射”这些都是晚帮定地址的,其效率都会收到影响。