`
花花公子
  • 浏览: 130145 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用rails 3的有没有想过退回到2.3的

阅读更多
正在用rails3的各位,你们有没有被忽悠的感觉?

以前对大胡子yehuda印象不错,特别是此君ruby/javascript双修,一度被我视作偶像。和他也见过两次面,感觉人也不错。我现在还清楚记得他一直消灭无意义的语言之争的倡导。

可是rails 3的速度实在难以忍受。3.1所谓的新特性coffeescript和scss的支持自己加上两句require也能解决了。对于chunked encoding的支持在rack和sinatra中也早就实现了。

rails所谓的社区主导其实还是几个主要开发者主导,比如现在yehuda转去做前端了,rails也要增加传说的rich client api了。

建议顺带看一下下面这篇吐糟basecamp的,创新公司也终归有一天不思进取
http://www.christianjung.com/2011/goodbye-basecamp-this-is-the-end-of-a-true-love-my-heart-is-broken/
分享到:
评论
29 楼 山雨欲来风满楼 2011-06-28  
如果在开发模式下太慢, 已经有解决方案了。

gem install rails-dev-boost


另外,我没有用active-record,自己感觉rails 3速度还可以, 在生产模式下,不过没有测试数据来证明。
28 楼 cxh116 2011-06-28  
根据RAILS3更新太快了  哎...
27 楼 chloerei 2011-06-28  
之前用脚手架测试,rails3 + ruby 1.9.2是最慢的,rails3 + ree 1.8.7 是最快的。数据丟了,感兴趣的可以测试下。
26 楼 zires 2011-06-28  
花花公子 写道
正在用rails3的各位,你们有没有被忽悠的感觉?

忽悠倒没觉得,rails3带来的新特性让人一震,性能的话,应该还在调优,期待后续版本
25 楼 xiaojin0913 2011-06-28  
只用最新的,不回更旧的,
PS:
LZ其实一直发rails 不好用的信息,,可能与你现在推广的啥有关的,只是个人想法...

PSPS
我觉得rails很好,所以一直用,就这么简单,我自认为自己没能力改变rails  的速度什么的,所以,只能看大牛们努力了
24 楼 up2u0609 2011-06-28  
Hooopo 写道
rainchen 写道
的确是慢了,刚好有个项目从2.3.9升级到3.0.5的,简单对比下db和routes的:

for 2.3.9:
  development:
    time rake db:version
      real	0m24.219s
      user	0m10.152s
      sys	0m2.971s

    time rake routes
      real	0m19.710s
      user	0m10.089s
      sys	0m2.713s
  
  production:
    time rake db:version RAILS_ENV=production
      real	0m20.110s
      user	0m12.217s
      sys	0m2.592s
    
    time rake routes RAILS_ENV=production
      real	0m19.384s
      user	0m12.109s
      sys	0m2.600s


for 3.0.5:
  development:
    time rake db:version
      real	0m41.514s
      user	0m26.641s
      sys	0m3.403s

    time rake routes
      real	0m34.094s
      user	0m27.760s
      sys	0m3.100s

  production:
    time rake db:version RAILS_ENV=production
      real	0m26.630s
      user	0m20.295s
      sys	0m2.643s
    
    time rake routes RAILS_ENV=production
      real	0m24.340s
      user	0m21.401s
      sys	0m2.547s



在development上rails3比2慢了将近一倍
但比较让人满意的是production时区别不大
但在做开发时随便跑个rails、rake命令都要30-40秒以上实在影响情绪

肯定是不会退回去的,rails3好的地方更多,只是希望再后面的版本性能能提上来。
另外个人不大喜欢coffeescript这种东西。


这个时间大部分都是ruby的加载文件所花的时间,和rails性能没多少关系。当然这个会影响开发体验。
ruby1.9.2的require性能问题已经解决了:http://www.rubyinside.com/ruby-1-9-3-faster-loading-times-require-4927.html

对于新建项目来说,退已经成了一个不太容易的事情。rails(包括其他很多gems)的带病升级是一贯的优良传统,新的更新和对旧bug的修改会出现在新的版本里。
如果进3.1的话,至少这几个安全方面的改进和HTTP Streaming,Rack::Cache ,Rack::ConditionalGet.就已经值得进。

ActiveRecord3.1 对于association chain的改变,特别是has_one和belongs_to,更像是给3.2版本作的准备工作。但是现在肯定有一批依赖于association chain的东西会被影响,能够马上想到的一个例子比如will_paginate.

mountable的engine在实用上我用得很不舒服,但是在做了一些hack工作之后还是能够出来可以接受的效果。只是在mount之后必须要用main_app.xxx_path这样的方式来找route helper我个人觉得很多余;另外在engine内调用route也很难受,因为不可能知道自己会被以什么别名来mount。

sprockets作为一个第三方的包被作为杀手级应用引用到rails3.1里,结果sprockets2的最新一个版本2.0.0.beta.11的一个看起来很有道理的改变会让rails-3.1.0.rc4里的rake assets:precompile直接不工作。
这个改变是把一个getter里原来直接返回一个数组的方式改成返回数组的dup:
2.0.0.beta.10里的
    def paths
      @trail.paths#.dup
    end

2.0.0.beta.11里的
    def paths
      @trail.paths.dup
    end

恶啊~总之~现在类似的情况还有一些~
但是不管怎么说,2.3和3.1之间还有一个3.0 .我想说,所谓慢通常并不是一个框架单方面的问题,框架通常是把原有的问题放大。当然,这事具体问题具体分析,各家有各家的经。
23 楼 t0uch 2011-06-27  
每次rails新版本总是有很多让人兴奋的东西出现。用上了rails3从来没有想过rails2。rails2到3是这样,这次的3.1也一样。有时候,很多东西比性能重要。
22 楼 richyzhang 2011-06-27  
Rails的学习曲线是很高,而且实际上用rails能节省的开发时间和对web的了解成正比。Web知识丰富的学起来快用起来也觉得自然,否则就觉得学起来成本太高了。

Rails的开发效率很高,但是别指望一个新手可以很快上手。
21 楼 Hooopo 2011-06-27  
orcl_zhang 写道
rails很多地方做的很不好。比如关于form,routes等,太多的语法糖,同一个东西写法太多,过于花哨,不实用。带来的是学习上的成本提高,而没有任何一点好处。

让你的代码更DRY和提供漂亮的API接口难道不实用?不知道你指的实用是什么。
20 楼 rainchen 2011-06-27  
前面跑rails3的就是用ruby 1.9.2
ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0

关于ruby 1.9.3提速的(http://rhnh.net/2011/05/28/speeding-up-rails-startup-time)之前试过,部分gem 不兼容,project跑不起来没办法对比

btw,有了rvm,换ruby版本很轻松
19 楼 richyzhang 2011-06-27  
以我的经历来说,Rails3.0看了下,我觉得内部结构优化的不错,但没有任何让我换版本的动力。毕竟jquery早有插件可以支持,ActiveRecord我也没需求换成其他的,反而要连带命令变更、接口变更等的麻烦,于是继续用Rails 2.3.

但是,3.1的出现,Rails让人提神的东西又出现了。scss虽然本来也就存在,但和rails框架内的结合还是3.1做的好,asset变成头等公民的意义重大。coffeescript值不值两说,但反正可以直接在里面写js,Rails3.1为此提供了一个良好的什么代码放在什么位置的惯例和框架,这是很棒的。同样在view层面,还支持了view模板的继承,终于开始有一个框架把写OO代码常用的思想运用到view层去了,这是了不起的创举。动手写网页的人都明白,写web应用最费时间的就是view层。另外几个层面老实说已经解决的算不错了,但view层基本被动的很少。Rails3.1在这方面做出了突破。

说道性能,Rails3主要搭配ruby1.9了,不知道1.9@3.1 vs 1.8@2.3性能如何。无论如何,这一点确实挺让人郁闷的,从各种言论来看,rails3的性能提升确实不佳。

但是,提神的东西超过让人郁闷的东西,老的项目我是不想折腾,继续2.3。新的项目那肯定直接上3.1了。

18 楼 Hooopo 2011-06-27  
wenyiyun 写道
yehuda的胡子还嫩着呢,我猜他的计算机功底是一坨狗屎,纵然他又搞JS又搞html。

这是冷笑话么
17 楼 Hooopo 2011-06-27  
rainchen 写道
的确是慢了,刚好有个项目从2.3.9升级到3.0.5的,简单对比下db和routes的:

for 2.3.9:
  development:
    time rake db:version
      real	0m24.219s
      user	0m10.152s
      sys	0m2.971s

    time rake routes
      real	0m19.710s
      user	0m10.089s
      sys	0m2.713s
  
  production:
    time rake db:version RAILS_ENV=production
      real	0m20.110s
      user	0m12.217s
      sys	0m2.592s
    
    time rake routes RAILS_ENV=production
      real	0m19.384s
      user	0m12.109s
      sys	0m2.600s


for 3.0.5:
  development:
    time rake db:version
      real	0m41.514s
      user	0m26.641s
      sys	0m3.403s

    time rake routes
      real	0m34.094s
      user	0m27.760s
      sys	0m3.100s

  production:
    time rake db:version RAILS_ENV=production
      real	0m26.630s
      user	0m20.295s
      sys	0m2.643s
    
    time rake routes RAILS_ENV=production
      real	0m24.340s
      user	0m21.401s
      sys	0m2.547s



在development上rails3比2慢了将近一倍
但比较让人满意的是production时区别不大
但在做开发时随便跑个rails、rake命令都要30-40秒以上实在影响情绪

肯定是不会退回去的,rails3好的地方更多,只是希望再后面的版本性能能提上来。
另外个人不大喜欢coffeescript这种东西。


这个时间大部分都是ruby的加载文件所花的时间,和rails性能没多少关系。当然这个会影响开发体验。
ruby1.9.2的require性能问题已经解决了:http://www.rubyinside.com/ruby-1-9-3-faster-loading-times-require-4927.html
16 楼 Hooopo 2011-06-27  
从rails2.3到3.1,我觉得很多地方越来越好。
易用性方面:
引用
Bundler
ActiveRecord 的新 Query API
ActiveRecord 的新 Validation API
Block Helper
UJS
新的 Routing API
新的 ActionMailer
Rails console默认输出SQL query log
Custom ActiveRecord Attribute Serialization


解耦合方面:
引用
Mountable Engines
Template Inheritance
ActiveModel


安全方面:
引用

XSS
ActiveModel::SecurePassword
Rack::SSL

性能方面:
引用
HTTP Streaming
SQL Prepared statements
Rack::Cache
ActiveRecord Identity Map


还有就是修复若干bug
当然目前各种测试表明,rails3的性能确实不如rails2.3。据说rails3.2要优化性能和内存使用情况(好像3.0的时候就提过..)。
我觉得从框架本身上提升rails性能空间有限,rack就是rails性能的极限,但是rack/sinatra的性能和nodejs的框架比起来还差得远。


15 楼 t0uch 2011-06-27  
3.1 coffee这东西把gem去掉就ok了,generate的时候就不会生成有关coffee的东西
14 楼 up2u0609 2011-06-27  
R3.1上,coffeescript和scss这两个变化我个人情感上很喜欢,但是目前是项目里还基本忽视,类似的锦上添花的变化每次都有一些。

我觉得ActiveRecord/association,engine和route的变化比较值得关注。

只是一些方法变化太大,主要还有一些明显的bug,让人觉得很不舒服。
13 楼 rainchen 2011-06-27  
的确是慢了,刚好有个项目从2.3.9升级到3.0.5的,简单对比下db和routes的:

for 2.3.9:
  development:
    time rake db:version
      real	0m24.219s
      user	0m10.152s
      sys	0m2.971s

    time rake routes
      real	0m19.710s
      user	0m10.089s
      sys	0m2.713s
  
  production:
    time rake db:version RAILS_ENV=production
      real	0m20.110s
      user	0m12.217s
      sys	0m2.592s
    
    time rake routes RAILS_ENV=production
      real	0m19.384s
      user	0m12.109s
      sys	0m2.600s


for 3.0.5:
  development:
    time rake db:version
      real	0m41.514s
      user	0m26.641s
      sys	0m3.403s

    time rake routes
      real	0m34.094s
      user	0m27.760s
      sys	0m3.100s

  production:
    time rake db:version RAILS_ENV=production
      real	0m26.630s
      user	0m20.295s
      sys	0m2.643s
    
    time rake routes RAILS_ENV=production
      real	0m24.340s
      user	0m21.401s
      sys	0m2.547s



在development上rails3比2慢了将近一倍
但比较让人满意的是production时区别不大
但在做开发时随便跑个rails、rake命令都要30-40秒以上实在影响情绪

肯定是不会退回去的,rails3好的地方更多,只是希望再后面的版本性能能提上来。
另外个人不大喜欢coffeescript这种东西。
12 楼 orcl_zhang 2011-06-27  
rails很多地方做的很不好。比如关于form,routes等,太多的语法糖,同一个东西写法太多,过于花哨,不实用。带来的是学习上的成本提高,而没有任何一点好处。

真的慢了好多。不过还没开始用r3

http://blog.tstmedia.com/news_article/show/86942

引用
A simple reproducible benchmark shows ActiveRecord 3.0.7 to be 1.43 times slower than ActiveRecord 2.3.2.
11 楼 易卡螺丝君 2011-06-27  
花花知道在鸡眼网发贴 是多么徒劳的事了吧
10 楼 hellolaojiang 2011-06-27  
到底好不好,慢不慢,你还是自己去实践实践吧。别看了几篇BLOG就说这也不好,那也不行。天天还有人嚷着JAVA要死了呢,你看人家还不是活的好好的。我没上过3.1,但从我的小站在3.X上运行的情况来看,3.X并没有你想象的那么慢。

相关推荐

Global site tag (gtag.js) - Google Analytics