尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

C#会重蹈覆辙吗?系列之1:论C#性能不能承受之慢

C#会重蹈覆辙吗?系列之1:论C#性能不能承受之慢 Firelong既然写了帖子就有充分的技术原理依据和工程实战依据。没有动谁奶酪的意思只是善意提醒。也不会怕扣屎盆子。更不是为了博眼球骗点击量——firelong儿子都四岁了早过了穿奇装衣服、批黄头发吸引人注意的年龄了。Firelong只想与大家好好讨论问题事实上firelong是个C#多年的研究派和实战派对C#的感情比大多数人更强。只是firelong已经嗅到了C#发展道路上的一股歪风邪气新功能新功能再来一个新功能coolcool很cool。殊不知编程语言是来解决软件问题的不是一个功能集合的show场——可惜国内绝大多数.NET程序员特别是老赵们对语言还停留在这个认识水平上。这正是国内.NET技术社区总体相对其他技术社区比如C社区比如Java社区显得比较弱智的原因。而所谓的社区精英老赵们又不好好研究软件问题而是天天告诉大家这个新功能cool那个新功能niu的来骗取眼球。你看看人家C社区和Java社区早跳出了把玩语言新特性的阶段了而是注重研究真问题。firelong看不下去国内.NET技术社区继续这样沉沦下去。这正是firelong决定写博呐喊的原因。好了言归正传firelong讨论技术会严格遵循“摆事实讲原理”的guidline不会意气用事。Firelong首先来谈性能问题这是C#语言在不断塞入新功能后所带来的最严重的问题。其他问题firelong也会在后续的帖子中一一道来。由于性能问题比较复杂firelong首先在这篇帖子中先“摆事实”然后在后续的帖子中“讲原理”firelong相信这样会把问题说透彻。下面开始摆事实。也就是C#性能不好的事实。而且一定要是较为全面的事实而不是拿一两款软件来说事我也希望其他论者不要拿一两款软件说事。我们从目前世界或者中国存在的几大类常用软件不常用的软件不在firelong性能评价之列因为不具代表性开始来谈谈事实。一、客户端软件请大家告诉我Windows平台上有哪个流行的客户端软件是C#做的微软自家客户端word, access, excel, outlookIEpowerpoint, msnmessagermediaplayer, groove, onenote, project, security essentials……国外软件客户端firefox, google chrome, photoshop, dreamweaver, illustrator, autodesk,quicktime,safari, ultraedit, adobe reader, acdsee…….国内客户端qq及各个家族产品, 迅雷360flashget, Foxmail暴风影音金山词霸优化大师傲游电驴ppliveppstream阿里旺旺飞信以前用过C#开发后来受不了改回C了……..任何一个领域大家能找出哪怕1-5款在全世界或中国流行的客户端软件是用C#写的吗 请反方同学回答该问题。其实不止飞信firelong好几个朋友在腾讯、金山等公司做研发工作他们都仔细评估过C#做客户端的性能问题最后得出来的结论无一不是放弃C#。特别搞的是其中有一个公司的首席架构师就是从微软总部挖过来的大家都以为他最支持C#没想到他否定C#否定的最厉害。就连VS 2010这个就算我们程序员自己的客户端吧也是C/C做的别把用.net搞了一点界面就说VS是.net做的vs用.net做的少的可怜的代码量可以从GAC这里C:\Windows\assembly看microsoft.visualstudio开头的部分来得出自己的结论至于Windows操作系统——这算最大的客户端了吧我压根就没期望这辈子能看到它用.NET开发参见李开复博客http://blog.sina.com.cn/s/blog_475b3d560100h4il.html 注意其中几句话:1. “盖茨定位的Windows Vista的三大目标是支持新语言C#所有操作系统软件都改用C#来写。因为C#语言的运行较慢但是开发速度很快这样微软不会落后于多人参与的开源Linux操作系统的发展。”2. “因为技术的瓶颈已经到了极限很多总监看到这个设想就倒吸了几口凉气“技术难度太高了C#这么慢怎么能做操作系统啊数据库不够快啊怎么可能当做档案系统””3. 经过了三年的奋力拼搏微软视窗团队的工程师们都已经疲惫不堪。但是Windows Vista的成功却似乎遥遥无期。其实灾难早就在酝酿因为大家在一开始就知道这个伟大的计划实现起来其执行难度实在是太大了!目前我所知道的使用.NET做的算个稍微有点规模、有点含量的客户端也就是Expression Studio微软自己用WPF开发的——firelong孤陋寡闻如果大家知道更多的请指出。千万别拿codeplex里面的玩具软件说事你看看那里的软件除了将程序员作为用户有多少软件是为真实的用户写的别说.NET出来得晚很多软件还没来得及用.NET做。.NET从2000年开始推出到今天已经10年了能干的话早该干了我本以为Expression Studio微软会用什么C#性能提升秘籍来搞提振大家对C#的性能信心希望研究学习学习。但是我真正跑了几次就郁闷了我估计它几年后的命运和Windows Vista差不多。有人说只拿客户端软件说事不公平。那么我们来拿网站当今世界上对人类最重要的软件就是网站了对吧说说。二、互联网软件大家可以到这里来看http://www.alexa.com/topsites Alexa全球前500大的网站请数一数其中除了微软自己的网站为了dogfood的广告外有几个是.NET开发的——何况即便是微软自己的网站也只是部分地用了.NET。或者不相信Alexa的话到这里http://www.google.com/adplanner/static/top1000/ 看看google对全球前1000名的网站排名中数一数有几个是.NET开发的如果你懒得看Alex或者Google的排名。我在这里贴出一些典型的网站大家看看google.comfacebook.comyoutube.comyahoo.comlive.comwikipedia.orgbaidu.comblogger.commsn.comqq.comtwitter.comyahoo.co.jpgoogle.co.in taobao.comgoogle.de google.com.hk wordpress.comsina.com.cnamazon.com google.co.ukebay.combing.com163.comyouku.comsohu.comtudou.comsogou.comhao123.comtianya.cnkaixin001.comalibaba.com………你可别说其中用了一个Silverlight插件就说那个网站是.NET开发的有人又说了你别光拿用户看得见摸得着的软件说事啊C#做了好多用户看不见的软件啊。那我们来看看用户看不见的软件中最关键的部分服务器软件。三、服务器软件. 微软自家服务器biztalk, sharepoint, exchange, ISA, OCS, Sql server……. 其他厂商的oracle, websphere, weblogic, mysql, Sybase, db2, aphache, vmware……行了不用把省略号写下去了吧。国内厂商对不起这块没什么牛叉的服务器。写到这里我的问题出来了C#自2000年问世以来在全世界或者全中国到底搞出来了几个响当当的能拿出手的亿万用户喜闻乐见的软件了 别说C#还年轻10年在技术界算老人了 我相信立即会有一大堆人怒吼企业应用啊这就对了firelong给企业应用的解释就是“即便性能不咋样客户也可以接受的软件叫企业应用”四、给老赵的问题最后一个问题提给老赵老赵不是最近去了盛大吗仍然在写.NET吧老赵可不可以告诉大家盛大的核心游戏平台上的软件服务端、或者客户端都可是.NET写的吗 如果是我佩服五体投地。如果不是老赵能否向盛大CTO建议采用.NET来写盛大的游戏平台服务端、或者客户端都可。老赵在其中用linq给排排序多优雅啊用reflection给动态加载加载多灵活啊用dynamic和其他软件互操作操作多方便啊用attribute给类标记标记多曼妙啊用jit编译器让盛大的游戏跨跨平台多牛叉啊希望老赵不要回避这个真正的问题千万别说游戏平台是系统内核底层应用所以没有用C#——人家safe360是系统内核底层级软件游戏软件可不是游戏软件是典型的高级软件游戏场景里面一大堆一大堆的object不是正符合老赵等.NET拥趸口口声声的高级抽象吗如果老赵在盛大写的不是游戏平台上的软件那么firelong烦请老赵告诉.NET社区自己在盛大写的软件是什么很senior很senior的企业应用吧:)。最后结语所有所有这些软件压根没有用C#或者经过调研、或者经过实际部署应用但最后都放弃了C#的原因是什么性能性能性能去年在上海参加.NET技术大会碰见.NET技术的大佬Jeffrey Richter在论坛阶段我问了Jeffrey Richter两个问题“1. .NET性能什么时候才能提上来 2. 微软为什么自己的绝大多数软件都不用.NET开发” Jeffrey Richter回答“1. 我相信我有生之年能看到 2. 微软自己主要用C/C但是鼓励开发者使用C#”。听到Jeffrey Richter这两个回答firelong当时有两个感想. Jeffrey Richter看上去还很年轻有生之年是万年吗兄弟们等得起吗技术行业年光景相当于万年不知道要埋葬多少技术. 微软真伟大难的都留给自己容易的都留给开发者真伟大啊真伟大我想写到这里大家应该理解我第一个帖子的缘由了。醒醒吧朋友们别再在老赵们编织的“新功能新功能再来一个新功能coolcool很cool”的童话中写代码了真正牛叉的编程语言就要编写出像IE、adobe readerfacebookQQ这样亿万人使用的牛叉的软件出来如果你说用C#开发你们公司一个小asp.net网站或者几百人使用的什么企业应用firelong太讨厌企业应用这个词了不就是读读数据库吗搞那么神乎其神干嘛你说.NET性能很好那我没话说。但是你要开发成千上百万甚至几亿、几十亿用户都使用的软件、网站、或者服务器、中间件你还坚持使用C#开发除非你自己做老板不过请记住Larry PageSergey BrinMark ZuckerbergJeffBezos Jack Dorsey、李彦宏马云马化腾丁磊不会比你傻。好了Firelong本帖已经摆完了事实。请大家也先摆事实开始来PK。在PK之前希望大家遵循前贴技术社区辩论的Guidlines Patterns之倡议http://www.cnblogs.com/firelong/archive/2010/06/21/1762054.html。下一帖firelong将“讲原理”即解释C#性能为什么这么慢也就是firelong最开始的帖子希望C#砍掉的那些语言构造存在什么样的性能问题——firelong在项目中研究这些个问题2年多了性能优化技巧也用了很多了将在下帖中一一列出。firelong已经酝酿好了只待这个帖子供大家pk充分后再下笔。Firelong应该会在星期内再写下一帖C#会重蹈覆辙吗系列之2论C#性能问题之原理。谢谢等待
返回列表