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

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Securelist
D
Docker
The Register - Security
The Register - Security
GbyAI
GbyAI
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
罗磊的独立博客
博客园 - 【当耐特】
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
I
InfoQ
MyScale Blog
MyScale Blog
量子位
Cyberwarzone
Cyberwarzone
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园_首页
H
Help Net Security
K
Kaspersky official blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Blog — PlanetScale
Blog — PlanetScale
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
The Cloudflare Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
爱范儿
爱范儿
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

博客园 - 大约在冬季

如何在IronPython中使用C#扩展方法 LINQ入门教程示例使用F#的实现 宝宝照片更新喽 再谈两种不同字符串比较方法的性能对比 - 大约在冬季 - 博客园 如何让DevExpress.TreeList单元格中的自定义控件包含标签 见证中国A股市场:上午大盘加速寻底 沪指跌129点,探低至4241.02 漂亮宝宝100天啦!庆祝一下! F# 学习笔记(1/n) 权重股杀跌沪指半日破两关跌135点 IronPyton分析表达式 WCF服务契约 听课笔记 两种不同字符串比较方法的性能对比 .Net 事件类型的实现和推荐做法 设计时支持:如何获取环境数据 如何在C#中调用 IronPython 代码 (基于IronPython 2.0A3) 运行Oracle数据库配置向导创建数据库失败ORA-24324的解决方案 C#3.0 自动属性——只能在简单属性上偷懒 性能——换个角度看问题 设计模式的滋味
最近性能优化一些感触,分享中……
大约在冬季 · 2007-09-05 · via 博客园 - 大约在冬季

        最近一段时间一直忙于对现在的一个系统进行优化,现在把这些感悟写出来和大家分享。
        首先,系统优化本身由于其所处的产品周期或项目周期的关系,和其他诸元有着这样或者那样的联系。由于我们的现在的系统是建立在我们自己的一个开发平台的V1之上,这次优化不仅仅是因为系统本身存在优化的可能性和必要性,还有一点是希望借此来增加领导者对现有平台的认可度,为新平台的开发奠定基础并增加信心,能够给与V2平台更大的支持力度。要让领导者意识到,给予.Net技术的平台是能够有很好的性能表现的。不论是本地局域网还是VPN网络或者是窄带网的大型企业应用。
       另外,从技术上来说,我们原来有一个验证命令是否可用的方法,在优化之前执行删除某条记录后,这个方法会被执行48次,更要命的是,这48次是远程方法调用。总共花费了4.288秒。使用者可能会觉得“科技进步进步到什么地方去了?”。为此,我们通过将所有验证汇集到一点,再从这一点进行验证,减少到1次,测试后发现平均耗时:0.2秒。可见速度优化的不是一丁半点(窃喜,呵呵)。另外,在程序启动时,要进行大量Assembly的注册和反射扫描过程,以便能够发现我们所希望的信息,然后再对这些信息进行分类加工和整理。每次启动都作这样的动作,岂不是多余?况且Assembly的更新也不会比MS发布补丁包频繁。但是系统还是每天被用户打开和关闭的。难道希望用户每天上班的第一件事打开电脑登录系统的时候就心情不好?(呵呵,我们客户的容忍度还是很好的。)当然我们希望自己和用户一样可以心情愉快的开始每一天的工作,为此,立刻动工,我们通过将中间结果缓存的方式减少了部分反射和扫描。节省了20%左右的启动时间。在进行缓存的过程中,我们发现需要掌握一个平衡点。就拿二进制序列化来说吧,如果序列/反序列化的对象过大,性能还不如直接进行扫描。

        在优化的过程中,还发现一些没有被测试到的Bug,在进入某个文档后,工具栏的编辑按钮不可用,而上下文菜单中的编辑项确实可用的。点击之后却没有任何反应。不要说用户,我自己都被搞晕了。这个问题本应该在前期测试中就应该发现的(说明什么呢?……)。看起来虽然不是关键性的问题,但是这些问题如果在早期的测试中就能够发现,可以避免招致不必要的麻烦,节约维护和沟通的成本。想象一下,销售人员Demo时尴尬的表情,客户电话里困惑的声音,维护人员满脸的愁云,难道我们就不能把测试工作做得更好一些吗?虽然我不是专业的测试人员,但是通过这次优化我还是能够发现,测试这点事,不是一件小事。
      性能就像是海绵里面的水,你必须去不断地挤压,只要海面里面有水,你用的力道越大,被优化的性能也就越多。作为一个中型或大型的项目来说,往往在复杂度、开发成本、性能等多个纬度之间进行均衡。也许有什么公式可以计算出一个合理的数据,可惜我孤陋寡闻还没有找到这样的公式,那么我们只能在有效的控制开发成本和复杂度的情况下,必须重视性能!也许我是一个急性子,我不能容忍一个慢如蜗牛的系统!
      重视性能和测试工作吧!