{"id":51695,"date":"2014-02-07T19:06:33","date_gmt":"2014-02-07T16:06:33","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=51695"},"modified":"2020-03-10T12:44:22","modified_gmt":"2020-03-10T09:44:22","slug":"performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/","title":{"rendered":"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#Evaluation_results\" >Evaluation results<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#Sinatra_144\" >Sinatra 1.4.4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#Padrino_0114\" >Padrino 0.11.4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#Goliath_102\" >Goliath 1.0.2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#RoR_402\" >RoR 4.0.2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Evaluation_results\"><\/span>Evaluation results<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/ruby-frameworks-1.png\" alt=\"ruby-frameworks-1\" width=\"200\" style=\"margin: 10px 0px 0px 20px;\" class=\"alignright size-full wp-image-51696\" \/>The main goal of this article was to find the best framework for a very basic, but highly loaded Ruby application. This is the updated version of the <a href=\"http:\/\/altoros.github.io\/2013\/simple+fast+application+sinatra+espresso+padrino+goliath+rails\" target=\"_blank\"  rel=\"noopener noreferrer\">comparison<\/a> that was first posted in June 2013. Now, we ran all the tests again, using the latest versions of Sinatra, Padrino, Goliath, and Ruby on Rails (RoR). Unfortunately, the Espresso framework that we had tested last time disappeared from all the repositories, so it is no longer included.<\/p>\n<p>We used the following test infrastructure and settings: ApacheBench 2.4.3 ab -n 1000 -c 100 localhost, a 2.3 GHz Intel Core i5 Sandy Bridge CPU, 4 GB of 1333 MHz DDR3 RAM, a 120 GB Intel 330 SSD, OS X Mavericks 10.9.1, Ruby 2.0.0p247, and MySQL 5.6.14 in a development environment.<\/p>\n<p>In the comparative tables below, you will find performance results illustrating how much time it takes for the solutions to process 1,000 requests.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Sinatra_144\"><\/span>Sinatra 1.4.4<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Let&#8217;s start with <a href=\"http:\/\/www.sinatrarb.com\" target=\"_blank\"  rel=\"noopener noreferrer\">Sinatra<\/a>. It turned out that Unicorn works faster with MySQL and Views than with Views only, but since the difference is very small (0.005 sec), this might be due to an error.<\/p>\n<style type=\"text\/css\">\n\t.myTable { background-color:transparent;border-collapse:collapse;font-size:16px;}\n\t.myTable th { background-color:#999;color:white;width:20%;}\n\t.myTable td, .myTable th { padding:5px;border:1px solid #000; vertical-align: middle!important;text-align: center;}\n<\/style>\n<table class=\"myTable\">\n<tr>\n<th><center>Web server<\/center><\/th>\n<th><center>No Views and DB<\/center><\/th>\n<th><center>Views (Slim)<\/center><\/th>\n<th><center>Views (Slim) + MySQL (Sequel)<\/center><\/th>\n<\/tr>\n<tr>\n<td>WEBrick 1.6.1<\/td>\n<td><center>3.663 sec<\/center><\/td>\n<td><center>8.594 sec<\/center><\/td>\n<td><center>8.931 sec<\/center><\/td>\n<\/tr>\n<tr>\n<td>Thin 1.6.1<\/td>\n<td><center>0.626 sec<\/center><\/td>\n<td><center>5.730 sec<\/center><\/td>\n<td><center>7.159 sec<\/center><\/td>\n<\/tr>\n<tr>\n<td>Unicorn 4.8.1<\/td>\n<td><center>1.651 sec<\/center><\/td>\n<td><center>8.240 sec<\/center><\/td>\n<td><center>8.235 sec<\/center><\/td>\n<\/tr>\n<\/table>\n<p>To eliminate any inaccuracies, we rechecked all the controversial results many times and got pretty stable values. So, you should be extremely careful when building high-load applications, because any small changes may slow them down. We recommend to always run benchmark tests on the web server you want to use in production.<\/p>\n<p>Since Thin demonstrated the best results, while keeping the application very simple, we decided to use it for the rest of the tests.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Padrino_0114\"><\/span>Padrino 0.11.4<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Although the <a href=\"http:\/\/www.padrinorb.com\" target=\"_blank\"  rel=\"noopener noreferrer\">Padrino<\/a> framework is built on Sinatra with a lot of helpful features, like in RoR, its performance is still close to that of a clean Sinatra application. This is very good news for us.<\/p>\n<table class=\"myTable\">\n<tr>\n<th><center>Cache<\/center><\/th>\n<th><center>No Views and DB<\/center><\/th>\n<th><center>Views (Slim)<\/center><\/th>\n<th><center>MySQL (Sequel)<\/center><\/th>\n<th><center>Views (Slim) + MySQL (Sequel)<\/center><\/th>\n<\/tr>\n<tr>\n<td>No cache<\/td>\n<td><center>0.729 sec<\/center><\/td>\n<td><center>6.663 sec<\/center><\/td>\n<td><center>1.388 sec<\/center><\/td>\n<td><center>7.372 sec<\/center><\/td>\n<\/tr>\n<tr>\n<td>Memory<\/td>\n<td><center>0.662 sec<\/center><\/td>\n<td><center>6.218 sec<\/center><\/td>\n<td><center>1.170 sec<\/center><\/td>\n<td><center>7.140 sec<\/center><\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Goliath_102\"><\/span>Goliath 1.0.2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The results for <a href=\"http:\/\/postrank-labs.github.io\/goliath\/\" target=\"_blank\"  rel=\"noopener noreferrer\">Goliath<\/a> look a bit strange, because we expected this framework to be the fastest, thanks to its own HTTP server.<\/p>\n<table class=\"myTable\">\n<tr>\n<th><center>No Views and DB<\/center><\/th>\n<th><center>Views (Slim)<\/center><\/th>\n<th><center>MySQL (Sequel)<\/center><\/th>\n<th><center>Views (Slim) + MySQL (Sequel)<\/center><\/th>\n<\/tr>\n<tr>\n<td><center>2.075 sec<\/center><\/td>\n<td><center>7.477 sec<\/center><\/td>\n<td><center>4.314 sec<\/center><\/td>\n<td><center>10.184 sec<\/center><\/td>\n<\/tr>\n<\/table>\n<p>If you test it and get different results, please do not hesitate to mention that in the comments and\/or propose your version of the benchmark test.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"RoR_402\"><\/span>RoR 4.0.2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>We also decided to test RoR 4.0.2. For these tests, we enabled caching classes in <code style=\"color: black; background-color: #e6e6e6;\">development.rb<\/code> and disabled sessions and protection from forgery. We also used the Sequel database toolkit instead of ActiveRecord to make the results more trustworthy. As you can see, they turned out to be close to Goliath\u2019s, but slightly better.<\/p>\n<table class=\"myTable\">\n<tr>\n<th><center>No Views and DB<\/center><\/th>\n<th><center>Views (Slim)<\/center><\/th>\n<th><center>MySQL (Sequel)<\/center><\/th>\n<th><center>Views (Slim) + MySQL (Sequel)<\/center><\/th>\n<\/tr>\n<tr>\n<td><center>1.539 sec<\/center><\/td>\n<td><center>1.790 sec<\/center><\/td>\n<td><center>2.248 sec<\/center><\/td>\n<td><center>2.501 sec<\/center><\/td>\n<\/tr>\n<\/table>\n<p>You can take a look at the <a href=\"https:\/\/github.com\/melnikaite\/ruby-frameworks-comparison\/branches\" target=\"_blank\"  rel=\"noopener noreferrer\">applications<\/a> we created for these tests to make sure they were really similar. We hope this article helps you to choose the right Ruby framework. Feel free to leave your comments below.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-app-servers-template-engines-and-orms-2016\/\">Performance Comparison of Ruby Frameworks 2016<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/research-papers\/performance-comparison-of-ruby-frameworks-app-servers-template-engines-and-orms\/\">Performance Comparison of Ruby Frameworks, App Servers, Template Engines, and ORMs<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/research-papers\/performance-comparison-of-ruby-frameworks-goliath-ruby-on-rails-sinatra-padrino-and-espresso\/\">Performance Comparison of Ruby Frameworks: Goliath, Ruby on Rails, Sinatra, Padrino, and Espresso<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<hr\/>\n<p><center><small>The post was written by <strong>Eugene Melnikov<\/strong> with assistance of <strong>Alexander Kuntsevich<\/strong>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Evaluation results<\/p>\n<p>The main goal of this article was to find the best framework for a very basic, but highly loaded Ruby application. This is the updated version of the comparison that was first posted in June 2013. Now, we ran all the tests again, using the latest versions of Sinatra, [&#8230;]<\/p>\n","protected":false},"author":62,"featured_media":51744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[894,895],"class_list":["post-51695","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-benchmarking","tag-research-and-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails | Altoros<\/title>\n<meta name=\"description\" content=\"This blog post shares the performance results of four popular Ruby frameworks to find the best fit for a highly loaded Ruby application.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails | Altoros\" \/>\n<meta property=\"og:description\" content=\"Evaluation results The main goal of this article was to find the best framework for a very basic, but highly loaded Ruby application. This is the updated version of the comparison that was first posted in June 2013. Now, we ran all the tests again, using the latest versions of Sinatra, [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-07T16:06:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-10T09:44:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Eugene Melnikov\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eugene Melnikov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/\",\"name\":\"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg\",\"datePublished\":\"2014-02-07T16:06:33+00:00\",\"dateModified\":\"2020-03-10T09:44:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/2347aafc28e3658aea99b1b6671f7b70\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/2347aafc28e3658aea99b1b6671f7b70\",\"name\":\"Eugene Melnikov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/melnikov-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/melnikov-96x96.jpg\",\"caption\":\"Eugene Melnikov\"},\"description\":\"Eugene Melnikov is a senior software engineer at Altoros. He mainly specializes in Ruby and Ruby-based frameworks, as well as in JavaScript development, including Node.js, jQuery, and AngularJS. Working at Altoros, Eugene has also designed and implemented a variety of SQL and NoSQL database solutions. He recently became engaged in creating data-driven software for IoT applications. Check out Eugene's GitHub profile.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/eugene-melnikov\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails | Altoros","description":"This blog post shares the performance results of four popular Ruby frameworks to find the best fit for a highly loaded Ruby application.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/","og_locale":"en_US","og_type":"article","og_title":"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails | Altoros","og_description":"Evaluation results The main goal of this article was to find the best framework for a very basic, but highly loaded Ruby application. This is the updated version of the comparison that was first posted in June 2013. Now, we ran all the tests again, using the latest versions of Sinatra, [...]","og_url":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/","og_site_name":"Altoros","article_published_time":"2014-02-07T16:06:33+00:00","article_modified_time":"2020-03-10T09:44:22+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg","type":"image\/jpeg"}],"author":"Eugene Melnikov","twitter_misc":{"Written by":"Eugene Melnikov","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/","url":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/","name":"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg","datePublished":"2014-02-07T16:06:33+00:00","dateModified":"2020-03-10T09:44:22+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/2347aafc28e3658aea99b1b6671f7b70"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2014\/02\/ruby-frameworks-3.jpg","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/performance-comparison-of-ruby-frameworks-sinatra-padrino-goliath-and-ruby-on-rails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Performance Comparison of Ruby Frameworks: Sinatra, Padrino, Goliath, and Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/2347aafc28e3658aea99b1b6671f7b70","name":"Eugene Melnikov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/melnikov-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/melnikov-96x96.jpg","caption":"Eugene Melnikov"},"description":"Eugene Melnikov is a senior software engineer at Altoros. He mainly specializes in Ruby and Ruby-based frameworks, as well as in JavaScript development, including Node.js, jQuery, and AngularJS. Working at Altoros, Eugene has also designed and implemented a variety of SQL and NoSQL database solutions. He recently became engaged in creating data-driven software for IoT applications. Check out Eugene's GitHub profile.","url":"https:\/\/www.altoros.com\/blog\/author\/eugene-melnikov\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/51695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=51695"}],"version-history":[{"count":36,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/51695\/revisions"}],"predecessor-version":[{"id":51698,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/51695\/revisions\/51698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/51744"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=51695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=51695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=51695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}