锁定老帖子 主题:硬件越跑越快,软件越陷越慢
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-07
lgx522 写道 而所谓的可靠性、重用性、扩展性、...XX性,不是靠什么具体的软件技术,而是在于规范的管理与审慎的规划。
这句才是箴言! |
|
返回顶楼 | |
发表时间:2008-05-07
liusong1111 写道 ztka,能比较下php和rails的ActiveRecord吗?对这个话题比较感兴趣。也许,应该单独开个贴。 不懂rails,没法比较。 |
|
返回顶楼 | |
发表时间:2008-05-07
-- 不小心删了。
|
|
返回顶楼 | |
发表时间:2008-05-07
楼主的分析十分精辟,确实是这样!
所谓输赢,所谓流行,跟风是一重要的因素! 不过不跟风,又何来流行啊?! 技术是真的,鼓吹就没什么必要了! |
|
返回顶楼 | |
发表时间:2008-05-07
ztka 写道 网站方面,也就是ebay和淘宝用java架构,其他的,google,youtube,facebook,wiki等都不是java架构。
google用GWT,怎么可能不是java? 参见 http://hi.baidu.com/javafree/blog/item/89a6c8c63ef1e81e9d163d09.html |
|
返回顶楼 | |
发表时间:2008-05-07
lgx522 写道 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也可以用存储进程了,大家大可试试这种模式。 这种想法过于偏颇。企业应用当中缓存的用武之地有很多,比方说企业应用当中有大量的配置表、字典表这些都可以用缓存来加载,可以避免很多类似的直接SQL查询,以及产生的关联查询。另外所谓实时性高,也不会实时到每个表记录每个被访问都会被更新,比方说你用户信息表、权限表等等这些大量被查询的基础信息都会产生很高的缓存命中率。OK,统计报表是很难有效利用缓存,但是企业应用系统你并不是每时每刻都实时报表查询的。特别是类似的耗时查询,都会预先查询出来结果保存到结果表。另外如果写操作特别频繁的应用,ORM也许不会给你带来明显的性能提升,但是也不会让你的性能更糟糕,瓶颈还是在于数据库服务器的磁盘IO上。如果对于这种应用,你能够在应用层通过缓存来减少对数据库的写频率,ORM就会帮助你提高性能,而这一点,你直接用JDBC是做不到的。 |
|
返回顶楼 | |
发表时间:2008-05-07
ztka 写道 我说你那种hibernate的架构,我用php开发,维护成本比你低,开发时间不比你多,你觉得你的hibernate优势在哪里?忽悠?
你凭什么说维护成本低,我就单说招人成本,在中国好的PHP的人要比Java难招的多,项目不是单打独斗,是将配合的,你会让你项目组里最强的人去做维护任务么? hibernate优势不用我说,自己搜吧,善加利用的话。 再次强调hibernate也是草根出身,又不是EJB。 |
|
返回顶楼 | |
发表时间:2008-05-07
robbin 写道 lgx522 写道 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也可以用存储进程了,大家大可试试这种模式。 这种想法过于偏颇。企业应用当中缓存的用武之地有很多,比方说企业应用当中有大量的配置表、字典表这些都可以用缓存来加载,可以避免很多类似的直接SQL查询,以及产生的关联查询。另外所谓实时性高,也不会实时到每个表记录每个被访问都会被更新,比方说你用户信息表、权限表等等这些大量被查询的基础信息都会产生很高的缓存命中率。OK,统计报表是很难有效利用缓存,但是企业应用系统你并不是每时每刻都实时报表查询的。特别是类似的耗时查询,都会预先查询出来结果保存到结果表。另外如果写操作特别频繁的应用,ORM也许不会给你带来明显的性能提升,但是也不会让你的性能更糟糕,瓶颈还是在于数据库服务器的磁盘IO上。如果对于这种应用,你能够在应用层通过缓存来减少对数据库的写频率,ORM就会帮助你提高性能,而这一点,你直接用JDBC是做不到的。 robbin把缓存=ORM,我觉得偏颇了,缓存也可以用mmcache等。不是只有ORM才有缓存的。另外,企业应用方面,统计报表是非常重要的一块,所以说道企业应用,不用cache,估计都是这个原因。 |
|
返回顶楼 | |
发表时间:2008-05-07
icewubin 写道 ztka 写道 我说你那种hibernate的架构,我用php开发,维护成本比你低,开发时间不比你多,你觉得你的hibernate优势在哪里?忽悠?
你凭什么说维护成本低,我就单说招人成本,在中国好的PHP的人要比Java难招的多,项目不是单打独斗,是将配合的,你会让你项目组里最强的人去做维护任务么? hibernate优势不用我说,自己搜吧,善加利用的话。 再次强调hibernate也是草根出身,又不是EJB。 你认为中国好的java好招聘???你说的好的php人少,那是因为工资待遇和好的java不平等所导致。 |
|
返回顶楼 | |
发表时间:2008-05-07
总结即不懂管理,也对技术失去了热情的一种顾影自怜的说法。
其实这样的人我见过的多了。他们今天读着MSE,觉得无聊和空虚,说:啥我也学不到,就是来混一张纸。去搞软考,说一点用处也没有,就是一种混的方法。过了几年说,其实MSE还是学了点东西的。对软考说,这些个“不切实际”的学究体系其实反倒有些有用处。其实只要稍微有点脑子,也喜欢动脑子的人就都明白,现在的教育和考证究竟是咋回事。也会明白那些知识之所以过几年才能觉得有用,恰恰就是说明这个系统,这个教的方式,以及这个知识组织的形成存在重要的问题。 而动不动就又说要以硬件为中心,其实归根结底是这些人最基本的知识系统有问题,或者说他考的软考白考了,读的MSE白读了。当然企业应用最终也就是数据库读读读,写写写。但是是不是说只要你会读读读,就可以去写写写了,然后就可以企业应用了。这样的想法是不是太幼稚了,幼稚到了只有幼儿园的程度呢? 而说实在的,在国内天天叫不要迷信,不要吹嘘的人未必不是自己也在迷信,也在吹嘘。 为什么要出现虚拟机,为什么要尽量做到软件与硬件无关,这样的问题难道还需要再次拿出来科普科普吗?动不动就企业应用,难道不知道这些都是因为随着企业应用发展,带来的必然趋势吗? 还啥硬着头皮大体上啃了一遍学究知识,最后才搞明白程序要快要稳定,还是要搞清楚CPU、内存和硬盘,你去看看现在的云计算,告诉我cpu在啥地方,内存在啥地方,你的硬盘又在啥地方。去看看新的亚马逊的平台,google平台在搞啥东西。 更加奇怪的是还说,而所谓的可靠性、重用性、扩展性、...XX性,不是靠什么具体的软件技术,而是在于规范的管理与审慎的规划。貌似规范和规划是一种超脱于技术独立存在的东西,就是忘记了如果不于具体的技术结合规则就只能停留在纸面上。再审慎的规划,如果不以技术数据和技术方法相结合,也仅仅就是一种吹嘘和混闹。 |
|
返回顶楼 | |