看了一个家伙写的《Is Rails Slow?》的ppt,起了测试模板速度的念头。ppt里测试的是haml比erb快,那么我就测试一下slim和erb之间的速度把。我用的gem版本如下:
gemfile
source 'https://rubygems.org' ruby '2.1.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.1.1' # Use sqlite3 as the database for Active Record gem 'sqlite3' # Use SCSS for stylesheets gem 'sass-rails', '~> 4.0.3' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .js.coffee assets and views gem 'coffee-rails', '~> 4.0.0' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.0' # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', '~> 0.4.0', group: :doc # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring', group: :development # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use unicorn as the app server # gem 'unicorn' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Use debugger # gem 'debugger', group: [:development, :test] gem 'slim-rails', '2.1.4'
代码如下:
#users_controller.rb class UsersController < ApplicationController layout :false def index @users = User.all.to_a end def show @user = User.find_by_id(params[:id]) end def index_slim @users = User.all.to_a end def show_slim @user = User.find_by_id(params[:id]) end end
routes.rb
resources :users, only: [:index, :show] do member do get :show_slim end collection do get :index_slim end end
index.html.erb
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <table> <tr> <td>Name</td> <td>Phone</td> <td>Address</td> <td>Function</td> </tr> <% @users.each do |user| %> <tr> <td><%= user.name %></td> <td><%= user.phone %></td> <td><%= user.address %></td> <td><%#= link_to "#{user.name}", user_path(user.id) %></td> </tr> <% end -%> </table> </body> </html>
index_slim.html.slim
html head title body table tr td Name td Phone td Address td Function - @users.each do |user| tr td = user.name td = user.phone td = user.address td /= link_to "#{user.name}", show_slim_user_path(user.id)
================快乐的分割线====================================
下面是测试结果:
注释掉了URL helpers的情况下:
slim的速度:
1~3ms之间浮动
Rendered users/index_slim.html.slim (3.0ms) Rendered users/index_slim.html.slim (1.1ms) Rendered users/index_slim.html.slim (3.0ms) Rendered users/index_slim.html.slim (2.1ms) Rendered users/index_slim.html.slim (1.1ms)erb的速度:
2~6ms之间浮动
Rendered users/index.html.erb (2.4ms) Rendered users/index.html.erb (3.7ms) Rendered users/index.html.erb (3.2ms) Rendered users/index.html.erb (5.7ms) Rendered users/index.html.erb (3.0ms)
相关推荐
例如,Haml以其清晰的缩进和HTML抽象获得了开发者喜爱,而Slim则以更紧凑的语法和更快的解析速度吸引了一些用户。 ### 结论 Erubi作为Ruby的ERB模板引擎,以其简洁、高效和灵活的特点,为开发者提供了一种优秀的...
此外,HAML还支持内联样式和脚本,以及与其他模板语言(如ERB或JSP)的集成。 接下来,SASS是CSS的预处理器,它引入了变量、嵌套规则、混合(mixins)、函数等特性,让CSS代码更具有模块化和可复用性。比如,你可以...
视图通常包含 erb 或 slim 文件,结合布局文件(layout)和部分视图(partials),构建出完整的页面结构。 6. **控制器(Controllers)**:控制器处理来自用户的请求,调用模型进行数据操作,并决定返回哪个视图。...
总结来说,yatayat_server是一个使用Ruby语言和可能的Ruby on Rails框架构建的应用后端,它支持通过ERB、Haml和Slim三种模板语言来处理视图层,具备分页功能以优化大规模数据的显示。项目源代码可以从“yatayat_...
5. **模板引擎支持**: 尽管Hobbit本身可能不内置模板引擎,但可以通过Rack中间件集成ERB(Embedded Ruby)、Slim、Haml等模板语言,方便地渲染HTML或其他格式的响应。 6. **控制器和视图**: Hobbit遵循MVC(模型-...
8. **模板和辅助方法**:探讨了ERB、Haml、Slim等模板引擎的使用,以及视图中的辅助方法,如link_to、form_for等。 9. **安全与身份验证**:包括CSRF防护、哈希密码存储、授权策略(如CanCanCan)等内容,确保应用...
9. **Asset Pipeline**:Rails的资产管道允许你管理和优化应用中的CSS、JavaScript和图片资源,通过concatenation和minification提升页面加载速度。 10. **Action Cable**:Rails 5引入的特性,实现了Websocket功能...
- **视图**:Rails的 erb 或 slim 模板引擎用于创建HTML输出。视图负责渲染数据并呈现给用户。 - **控制器**:作为MVC模式的一部分,控制器接收来自用户的请求,处理数据,然后调用视图进行渲染。例如,`...
对应的视图文件位于`app/views`目录下,用 erb 或 slim 等模板语言编写,负责生成HTML响应。 5. **数据库**:如果项目使用了数据库,那么`db/schema.rb`文件会描述数据库的结构。Rails通常使用ActiveRecord,它是...
- **模板系统**:熟悉Rails内置的ERB模板引擎及其他第三方模板引擎,如HAML、SLIM等,提高开发效率。 #### 四、高级主题 - **插件与Gem管理**:了解如何使用插件(Gem)来扩展Rails应用的功能,以及如何管理和部署...
最后,可能还会讨论到性能优化,如使用缓存策略(如Rails的ActionCache和PageCache)来减少数据库查询,提高报告的加载速度。 总的来说,"Ruby_full: RoR_Full_29 :: Ruby_reports"这个资源包涵盖了Ruby on Rails...
在性能方面,Dashing现在更加注重响应速度和资源利用率。通过优化内部工作流程和减少不必要的计算,Dashing可以处理更多数据流而不影响性能。此外,还添加了缓存机制,对于频繁查询但变化不大的数据,可以显著降低...
Rails支持 erb、haml 和 slim 等模板语言。 4. **控制器(Controller)**:控制器处理HTTP请求,调用模型并准备数据,然后将数据传递给视图进行渲染。 5. **数据库**:Rails默认使用SQLite,但也支持MySQL、...