<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://intel.hhhsoft.com/CS2NEW/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SUPCON Rustler的博客</title><link>http://intel.hhhsoft.com/CS2NEW/blogs/supcon_rustler/default.aspx</link><description /><dc:language /><generator>CommunityServer 2.1 (Debug Build: 60809.935)</generator><item><title>我身边计算能力决定的世界</title><link>http://intel.hhhsoft.com/CS2NEW/blogs/supcon_rustler/archive/2006/12/28/_A18B977BFD809B52B3519A5B_IT_164E4C75_.aspx</link><pubDate>Thu, 28 Dec 2006 13:30:00 GMT</pubDate><guid isPermaLink="false">09102575-11b6-4bee-8021-66d4609f08da:45</guid><dc:creator>SUPCON Rustler</dc:creator><slash:comments>2</slash:comments><comments>http://intel.hhhsoft.com/CS2NEW/blogs/supcon_rustler/comments/45.aspx</comments><wfw:commentRss>http://intel.hhhsoft.com/CS2NEW/blogs/supcon_rustler/commentrss.aspx?PostID=45</wfw:commentRss><description>&lt;p&gt;呵呵，开宗第一篇，写些什么呢？&lt;/p&gt;&lt;p&gt;还记得在高中的时候第一次接触PC，那个20个终端的Novell网。整个网络只有两台486PC支撑，刚刚学会DOS操作的我们，在老师的带领下用Turbo C来完成简单的C程序设计，欣喜之余，计算能力的不足经常导致整个网络的阻塞，编译作业被提交到两台PC上进行，很不方便。当时感觉486真的很神奇，靠分时系统支撑了20个人同时编程。后来，老师在一台486上安装了Windows 32，我们都惊呆了，原来世界可以如此的精彩！&lt;/p&gt;&lt;p&gt;后来呢，大学的时候，寝室里8个同学共同集资买了一台奔腾160，至今我还记得其它寝室同学贪婪的目光。这时互联网技术正在普及，大量的静态网站开始兴起，由于计算能力的珍贵，当时很少有网站提供动态内容，一个聊天室程序都能让大家激动一阵子。大四的时候，计算机已经发展到奔III的时代，IT世界一下子精彩了起来，各种3D游戏大量涌入，网络服务变得令人激动。那个时候，QQ和MSN方兴未艾，计算能力使各大网站推出了多彩的Email服务。最令人激动的是大量视频下载供能和音频聊天，仿佛一夜之间，这个世界就变化了。当我拿着自己在大学时开发的一些小软件应聘到SUPCON的时候，Oracle正在发布9i，Xml也兴起了，实时数据库技术开始热了起来，这一切的到来有一个核心原因，就是P4带来的计算能力。&lt;/p&gt;&lt;p&gt;这个时代真是很疯狂，一切都高速进行。2003年，当时我负责公司核心的先进控制系列软件的研发，其中一部分是将原有的c编写的算法库升级成用c++编写的更易维护的版本，为了提高效率，我根本不敢使用多层集成的关系，一律采用模版扁平化处理，内部尽量使用内联函数，以便进一步平面展开。但是开始的时候还是十分考虑封装性的。代码写完收工，感觉优雅得让自己笑出声来，结果一运行，性能只有原有c裸代码的十分之一。这是根本不能接受的。后来就是采取各种编译选项优化，效果都不理想。最终认识倒，不论怎么扁平化的封装，都会带来额外的类指针负荷，同时虽然内联展开了，但实际上代码依然会因此变得臃肿。没办法，只好拆掉了几个写好的脚手架类，将部分的Trait改写成直接展开的代码，又一个一个变量的优化，变方法调用为数组访问，尽量利用中间计算结果等等。最终效率达到了裸c代码的93%，终于可以用了。算法内部的优雅虽然有所破坏，但由于外部的面向对象以维护特性，终于可以批量便携各种高级算法包了。当时就在想，如果CPU再快一点，也许这些优化工作都可以不做，代码的质量和可维护性可以进一步提高。&lt;/p&gt;&lt;p&gt;2004年，是实时数据库发展的关键一年，这年新版本3.x终于面世了，随着新内核的出现，外围的应用开始涌现出来，计算机的速度使基于Web的应用可以使用.Net框架编写。一切都好像很顺利。结果在5月份，来了个大的MES项目，我当时刚成为开发部经理不久，意气风发，迅速构建了一个采用.Net Remoting和Smart Client技术支撑的应用平台，弟兄们被新技术感召，疯狂加班，封闭开发，在短短二十天左右的时间惊人地完成了Alpha版。结果公司也激动了，夸了我半天。当我们飘飘然地将Beta部署到现场的时候，悲剧开始了。工厂里面大量运行着奔腾II和奔腾III，内存256M的机器已经认为很不错了。我们基于IE嵌入WinForm的构架，由于是富客户端技术，对客户端的计算能力要求较高，加之网络错综复杂，Remoting常常异常连不上，表现得一塌糊涂。当时那个恨呀，就恨不得自己出钱将厂里面一百多台要上系统的电脑都更换了。痛定思痛，我们清醒地认识到，做构架和设计，不能看最新的计算能力，而需要看业绩平均计算能力，这个才是决定IT世界的核心问题。&lt;/p&gt;&lt;p&gt;2005年过得充实又平淡，所有的产品都在完善和等待新版本的爆发，各类技术都有所提升，但步伐不大。感觉C#变态一样地在复杂着自己的语法，Java却不断完善了。&lt;/p&gt;&lt;p&gt;结果时间进行到了2006年，随着双核技术的推进，计算能力有一次改变了很多事情。这年参加了Intel大量的培训，和Intel的很多高层技术人员做了交流，10月份，实时数据库4.0版本发布了，11月，Intel进驻中控，对其进行全面性能测试，注重了单双核的对比。结果是连我都震惊了。虽然整个实时数据库是分布式构架，内部进程线程都很多，设计上对并行考虑的也比较到位，利于表现双核的性能，这么庞大的一个软件体系，按我的估计，性能提升到1.3倍就不错了。没想到核心性能指标最低也上升了1.3，其它两个上升到1.7和2.3倍。虽然Intel培训时认为效率应该上升到小于2倍，但是由于双核带来的线程相互等待降低，以及同时并行执行线程能力增强，在多客户端的测试情况下，2.3倍的性能指标提升出现了。这个测试结果着实在业界引起不小的振动。还有研发同类产品的研发经理向我索要详细测试报告。我又一次认识到，好的构架需要高的计算能力来表现，就像如果水泵能力有限，长江在小溪面前也表现不出实力，但一旦水泵能力强了，小溪会被抽干，而长江的水滚滚而来。&lt;/p&gt;&lt;p&gt;结果，还没等我平复一下，Intel四核又发布了，这下有好戏看了，一些客户资金有限，过去总想购买单CPU的入门服务器，现在即便是这么做，也会发现我们的产品能力提高了一倍，这个用户体验完全是Intel送给我们的。感谢多核时代，这让我们大有可为！&lt;/p&gt;&lt;img src="http://intel.hhhsoft.com/CS2NEW/aggbug.aspx?PostID=45" width="1" height="1"&gt;</description></item></channel></rss>