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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 阿修

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.         “接口”、“委托”、“反射”这些都是晚帮定地址的,其效率都会收到影响。