锁定老帖子 主题:硬件越跑越快,软件越陷越慢
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-07
jjx 写道 说点实在的,在这个浑水缸里,踏踏实实掌握好DB、SQL和业务管理才是正道。 不知道大公司是什么样,个人觉得说的这点非常符合我现在所在的小公司。
|
|
返回顶楼 | |
发表时间:2008-05-07
如有那天有LZ之见解与感慨,也不枉到大超市来一遭。。
学习中。。 |
|
返回顶楼 | |
发表时间:2008-05-07
lgx522 写道 近日总算有点空闲,走马观花测试了一些技术,包括Grails、Seam、AOM、Python、ZendFramework、CakePHP、Flex、WPF等等,回到JE看了一些讨论,忍不住又要放点黄腔了。
自从多核CPU成为PC标配以后,硬件又上了好大一个台阶。到朋友家看了一下“孤岛危机”,实在是超级惊艳。单位上也终于耗上了一台双核、2G内存,这下跑什么IDE和AppServer都不用去小歇片刻了,真是感谢硬件产商们的努力。 某天看了一篇文章,地址记不清了,却道出了应用程序的本质:“不过就是在数据库里读读写写”,这下便像吃了苍蝇般不爽了起来。搞腾这个行当转眼也七、八年了,回头一想,的确是该反省反省了。 好几年前,更换电脑似乎总是为游戏而换。越来越清晰、越来越眩目、越来越震撼,且不论游戏好不好玩,单声光效果的提高都物有所值。那时候的应用程序其实要求是不高的,VB、Delphi、ASP、PHP这些老革命的IDE和作品,至今可以在怀旧的时候,拿到奔腾166的老机器上去跑一跑,丝毫不见慢。所以那时候更换电脑是与App无关了。 Java引领的虚拟机时代让笔者一度迷了五六年,曾经笔者一度天真地以为只要全面进入虚拟机和中间件时代就可以解决企业应用软件的种种问题,达到高度的业务逻辑重用、高度的异构集成、高度的安全性与伸缩性。这其间折腾的技术、框架加起来怎么也有几十种了,时光飞逝,转眼三十老几了,回头一想,当初的信仰很傻很天真,到头来“不过就是在数据库里读读写写”,最可笑的不过是越来越复杂、越来越慢。看来这些年是陪Sun、IBM、Microsoft以及开源领域的大牛们玩过去了。 由于是在单位上混,出于饭碗的需要,几年来不得不参加了当初以为“不切实际”的软考,一直混到系统分析师。回头看下来,这些个“不切实际”的学究体系其实反倒有些有用处。硬着头皮大体上啃了一遍学究知识,最后才搞明白程序要快要稳定,还是要搞清楚CPU、内存和硬盘;而所谓的可靠性、重用性、扩展性、...XX性,不是靠什么具体的软件技术,而是在于规范的管理与审慎的规划。 缘木求鱼,这就是国内软件业超级混乱的根源。根子上在于我们想偷懒的惰性,明明是我们该自己去思考、去设计、去解决的问题,我们不断地迷信可以依靠“大腕”、“大牛”们来解决。其实连伟大的党都承认了,“没有放之四海而皆准的真理”,何况是软件这种由人造、由人用的事物。结果如何,“大腕”、“大牛”们出于各种各样的目的,不断制造混乱。而我们,正是那随波逐流混水中的泥。 虚拟机时代到来了,动态语言时代到来了,SOA时代到来了,XXX时代到来了,无数吹鼓手吹起了喇叭,震耳欲聋。大家昏头昏脑跳进大大小小的池塘,一边陷下去,一边互相嘲笑、互相鄙视、互相谩骂。好一个热闹的软件大超市。 吹嘘有何用,迷信有何用?最终,还是要抓住硬件这根救人的稻草。 楼主的眼界应该更开阔一点,大厂商的技术本来就有多重要素,一方面,大客户如那些炼钢的或者是石油公司的超级复杂的软件体系,当复杂度超过一定程度,再考基本的一些所谓的业务管理是搞不定的;另一方面大厂商处于市场考虑推出各种技术,当然技术本身有好有坏,不一定都是吹牛的。 每年都会出现新技术,只要你能看清楚这些技术来龙去脉和本质,结合自己的技术观点,就能做出判断了,对搞技术的人来说,如SOA冷笑一声就可以了。IBM自己的人偷偷的说SOA的精髓只不过是一套做事的规范,不是什么软件规范(这句话机密,不要外泄)。 但是,如果你是一个业务分析师,即使技术出身,对于SOA的东西还是要作了结的,它的理论中总是有可取之处的,拿来主义嘛,不过这个属于市场营销层面的东西了,虽然和技术无关,但是技术要推广的好,也是部分依赖于市场营销的,像微软这方面就做得很好。 我认为再怎么混乱也比微软一家独大要好(尤其是不希望SL独大)。 |
|
返回顶楼 | |
发表时间:2008-05-07
软件架构复杂了一些,软件开发难度便简单了一些。
软件层次多了一些,开发出的软件功便更丰富了一些。 软件难度降低了一些,能从事软件开发人员的人数便多了一些。 程序员多了一些,软件成本便降了一些。 编程语言高层了一些,能重用的代码/组建和软件包便多了一些。 硬件High了一些,考虑性能的顾虑便少了一些。 CPU计算能力更发达了一些,总体软件的执行效率更下降了一些。 现在的软件越来越费电。 |
|
返回顶楼 | |
发表时间:2008-05-07
因为首先硬件架构是基础,很多事情硬件架构基本解决了很多问题了。软件方面,我坚持简单就是美的风格,弄一大堆framework,不如弄简单的sql更好,说维护什么麻烦的,那是自己定义package没有定义好。
|
|
返回顶楼 | |
发表时间:2008-05-07
icewubin 写道 有吗?为什么你会认为用了framework、ORM、Ioc、AOP就会严重降低,我这里说了是“严重”,慢是慢一点,但是在整个运行时的体系中,这样的慢是可以忽略的,牵涉到优化理论了,打住。 但是我说的慢是是一些固有的慢,比如反射的开销,而且随着JVM的进步,这些开销也在改善,JDK1.4的反射就要比1.2的速度快很多。 但是绝大多数的时候,这个“慢”是使用不当造成的,而不是这些技术带来的,当然大家可说,这些技术的带来了更多的学习成本。 有兴趣的测一下。同一台AppServer机器,同一台DB。先来个小库,弄上十来条记录;再来个大库,弄个几千万条记录。 随便配个连接池,拿jdbc+Servlet+jsp做点CRUD,找个工具测一下,顺便记录一下搞定这些事情的时间。 Spring+XX+XX,再做同样的事情,再测一下。 再测个Grails。 传统EJB就免了,来个时髦的Seam,再测。 Java体系外的,测一测RoR,ASP,ASP.NET,PHP,cakePHP、Zendframework。 顺便提一下缓存的问题: 互联网应用,缓存是个宝,多加内存吧。可惜当前的互联网应用交互性越来越强了,“写”的东西越来越多,缓存也未必能解决多少问题。 企业应用,缓存就免了。以写为主、即时查询统计数据,缓存无用。 测试下来看看每种技术下耗费的开发时间和运行效率,就会感慨Rod Johnson说的“问问机器”。这下子,才知道操作DB的效率是决定因素。如果效率不再重要,大网站也就不会连DB都不用,转回去用文件了。 拐一个弯就慢一点,拐好几个弯就慢得太多。倒不如简单直接,开发、运行和维护都才够快。 说真的,最近是越来越认同Oracle大牛们把业务逻辑放进存储过程的言论了,不仅仅是高效率,同时也是现实可行的高重用。好在MySQL5也可以用存储进程了,大家大可试试这种模式。 |
|
返回顶楼 | |
发表时间:2008-05-07
ztka 写道 因为首先硬件架构是基础,很多事情硬件架构基本解决了很多问题了。软件方面,我坚持简单就是美的风格,弄一大堆framework,不如弄简单的sql更好,说维护什么麻烦的,那是自己定义package没有定义好。
关于维护问题,说到点子上了。 |
|
返回顶楼 | |
发表时间:2008-05-07
lgx522 写道 ztka 写道 因为首先硬件架构是基础,很多事情硬件架构基本解决了很多问题了。软件方面,我坚持简单就是美的风格,弄一大堆framework,不如弄简单的sql更好,说维护什么麻烦的,那是自己定义package没有定义好。
关于维护问题,说到点子上了。 很多说sql难以维护的,基本都是定义功能,模块,package什么定义的不好,导致那个结果。我看到大并发的东西,例如yahoo,google什么的,也没有用那么多framework。 |
|
返回顶楼 | |
发表时间:2008-05-07
回归到楼主的话题,为什么很多人说hibernate什么用起来不慢,他们碰不到数据量比较大的场景
|
|
返回顶楼 | |
发表时间:2008-05-07
icewubin 写道 lgx522 写道 mathgl 写道 用C作业务不是没有。
我的同事做农发行的业务就是用C写业务处理的 java仅仅作为前端界面而已 那些是属于高端应用了,运行速度要求很高,肯定得用C。很多海量访问的网站,性能要求高的部分模块也是如此做的。 google和taobao算是海量吧,貌似都是java(不是所有模块,但是如google的底层操作系统不算软件模块)的吧。 google最常用的是c++ /java/python.关键的业务总是由c++做的 facebook的thrift框架看到了吧,也是用c++ 做的通讯关键层 facebook的访问量多大?好像是前4吧? |
|
返回顶楼 | |