{"id":3804,"date":"2022-02-17T10:11:03","date_gmt":"2022-02-17T10:11:03","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/ways-to-increase-your-rails-performance\/"},"modified":"2024-07-04T21:01:27","modified_gmt":"2024-07-04T21:01:27","slug":"satt-att-oka-dina-ralsers-prestanda","status":"publish","type":"post","link":"https:\/\/thecodest.co\/sv\/blog\/ways-to-increase-your-rails-performance\/","title":{"rendered":"Hur man \u00f6kar Rails prestanda"},"content":{"rendered":"<h2 class=\"wp-block-heading\"><strong>Ruby First<\/strong><\/h2>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/sv\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a><\/strong> \u00e4r ett starkt objektorienterat spr\u00e5k. Faktum \u00e4r att (n\u00e4stan) allt i <strong>Ruby<\/strong> \u00e4r ett objekt. Att skapa on\u00f6diga objekt kan kosta ditt program en hel del extra minnesanv\u00e4ndning, s\u00e5 du m\u00e5ste undvika det.<\/p>\n\n\n\n<p>F\u00f6r att m\u00e4ta skillnaden kommer vi att anv\u00e4nda en <em><a href=\"https:\/\/github.com\/SamSaffron\/memory_profiler\">minne_profilerare<\/a><\/em> gem och en inbyggd Benchmark-modul f\u00f6r att m\u00e4ta tidsprestanda.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Anv\u00e4nd bang!-metoder p\u00e5 str\u00e4ngar<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kr\u00e4ver \"memory_profiler\"\n\nrapport = MemoryProfiler.rapport do\n<a href=\"https:\/\/thecodest.co\/sv\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> = \"X\" * 1024 * 1024 * 100\ndata = data.downcase\nslut\n\nrapport.pretty_print<\/code><\/pre>\n\n\n\n<p>I listan nedan skapade vi en str\u00e4ng p\u00e5 100 MB och minskade varje tecken som fanns i den. V\u00e5rt riktm\u00e4rke ger <a href=\"https:\/\/thecodest.co\/sv\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> f\u00f6ljande rapport:<\/p>\n\n\n\n<p><em>Totalt allokerad: 210765044 byte (6 objekt)<\/em><\/p>\n\n\n\n<p>Men om vi ers\u00e4tter rad 6 med:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code>data.downcase!<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p><code> <\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>L\u00e4s filer rad f\u00f6r rad<\/strong><\/h2>\n\n\n\n<p>F\u00f6rmodligen m\u00e5ste vi h\u00e4mta en enorm datainsamling med 2 miljoner poster fr\u00e5n en csv-fil. Vanligtvis skulle det se ut s\u00e5 h\u00e4r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kr\u00e4ver \"benchmark\n\nBenchmark.bm do |x|\nx.rapport do\nFile.readlines(\"2mrecords.csv\").map! {|linje| linje.split(\",\")}\nslut\nslut<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">anv\u00e4ndare system totalt verklig\n\n12.797000 2.437000 15.234000 (106.319865)<\/code><\/pre>\n\n\n\n<p>Det tog oss mer \u00e4n 106 sekunder att ladda ner filen helt och h\u00e5llet. Ganska mycket! Men vi kan p\u00e5skynda processen genom att byta ut <em>karta!<\/em> metod med en enkel <em>medan<\/em> loop:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kr\u00e4ver \"benchmark\n\nBenchmark.bm do |x|\nx.rapport do\nfil = File.open(\"2mrecords.csv\", \"r\")\nwhile rad = fil.f\u00e5r\nrad.split(\",\")\nslut\nslut\nslut<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">anv\u00e4ndare system totalt verklig\n\n6.078000 0.250000 6.328000 ( 6.649422)<\/code><\/pre>\n\n\n\n<p>Drifttiden har nu sjunkit drastiskt sedan <em>karta!<\/em> metod tillh\u00f6r en specifik klass, till exempel <em>Hash#map<\/em> eller <em>Array#map<\/em>, d\u00e4r <strong>Ruby<\/strong> kommer att lagra varje rad i den analyserade filen i minnet s\u00e5 l\u00e4nge den k\u00f6rs. <strong>Rubys skr\u00e4psamlare <\/strong>kommer inte att frig\u00f6ra minnet innan dessa iteratorer \u00e4r helt exekverade. Men om du l\u00e4ser den rad f\u00f6r rad kommer GC att flytta minnet fr\u00e5n de tidigare raderna n\u00e4r det inte \u00e4r n\u00f6dv\u00e4ndigt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Undvik metoditeratorer p\u00e5 st\u00f6rre samlingar<\/strong><\/h2>\n\n\n\n<p>Den h\u00e4r punkten \u00e4r en f\u00f6rl\u00e4ngning av den f\u00f6reg\u00e5ende punkten med ett vanligare exempel. Som jag n\u00e4mnde tidigare, <a href=\"https:\/\/thecodest.co\/blog\/high-demand-for-ruby-developers\/\">Ruby<\/a> iteratorer \u00e4r objektmetoder och de kommer inte att frig\u00f6ra minnet s\u00e5 l\u00e4nge de utf\u00f6rs. P\u00e5 en liten skala \u00e4r skillnaden meningsl\u00f6s (och metoder som <em>karta<\/em> verkar mer l\u00e4sbar). Men n\u00e4r det g\u00e4ller st\u00f6rre datam\u00e4ngder \u00e4r det alltid en bra id\u00e9 att \u00f6verv\u00e4ga att ers\u00e4tta den med mer grundl\u00e4ggande loopar. Som i exemplet nedan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">numberofelements = 10000000\nrandoms = Array.new(numberofelements) { rand(10) }\n\nrandoms.each do |linje|\n#g\u00f6r n\u00e5got\nslut<\/code><\/pre>\n\n\n\n<p>och efter refaktorisering:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">numberofelements = 10000000\nrandoms = Array.new(numberofelements) { rand(10) }\n\nwhile randoms.count &gt; 0\nlinje = randoms.skift\n#g\u00f6r n\u00e5got\nslut\n\"`<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Anv\u00e4nd String::&lt;&lt;-metoden<\/strong><\/h2>\n\n\n\n<p>Detta \u00e4r ett snabbt men \u00e4nd\u00e5 s\u00e4rskilt anv\u00e4ndbart tips. Om du l\u00e4gger till en str\u00e4ng till en annan med hj\u00e4lp av +=-operatorn bakom kulisserna. <strong>Ruby <\/strong> kommer att skapa ytterligare ett objekt. S\u00e5, det h\u00e4r:\u00a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code> a = \"X\"\n b = \"Y\"\n a += b<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>Egentligen betyder det h\u00e4r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code> a = \"X\"\n b = \"Y\"\n c = a + b\n a = c<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>Operat\u00f6ren skulle undvika det och spara dig lite minne:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code> a = \"X\"\n b = \"Y\"\n a &lt;&lt; b<\/code><\/code> &lt;\/code<\/code> &lt;\/code<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>L\u00e5t oss prata om Rails<\/strong><\/h2>\n\n\n\n<p>Den <strong>Rails ramverk <\/strong> har gott om \"<em>gotchas<\/em>\" som g\u00f6r det m\u00f6jligt f\u00f6r dig att optimera din <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/what-is-code-refactoring\/\">kod<\/a> snabbt och utan alltf\u00f6r mycket extra anstr\u00e4ngning.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Eager Loading AKA n+1 fr\u00e5gest\u00e4llningsproblem<\/strong><\/h2>\n\n\n\n<p>L\u00e5t oss anta att vi har tv\u00e5 associerade modeller, Post och Author:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">class F\u00f6rfattare &lt; ApplicationRecord\nhas_many :inl\u00e4gg\nslut\n\nklass Post &lt; ApplikationsRecord\ntillh\u00f6r :author\nslut<\/code><\/pre>\n\n\n\n<p>Vi vill h\u00e4mta alla inl\u00e4gg i v\u00e5r controller och rendera dem i en vy med deras f\u00f6rfattare:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">Styrenhet\n\ndef index\n@posts = Post.all.limit(20)\nslut\n\nvy<\/code><\/pre>\n\n\n\n<p>I controllern, <a href=\"https:\/\/thecodest.co\/blog\/a-simple-ruby-application-from-scratch-with-active-record\/\">ActiveRecord<\/a> skapar bara en fr\u00e5ga f\u00f6r att hitta v\u00e5ra inl\u00e4gg. Men senare kommer det ocks\u00e5 att utl\u00f6sa ytterligare 20 fr\u00e5gor f\u00f6r att hitta varje f\u00f6rfattare i enlighet d\u00e4rmed - vilket tar upp ytterligare tid! Lyckligtvis kommer Rails med en snabb l\u00f6sning f\u00f6r att kombinera dessa fr\u00e5gor till en enda. Genom att anv\u00e4nda <em>inkluderar<\/em> metoden kan vi skriva om v\u00e5r controller p\u00e5 detta s\u00e4tt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code> def index\n     @posts = Post.all.includes(:f\u00f6rfattare).limit(20)\n slut<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>F\u00f6r n\u00e4rvarande kommer endast n\u00f6dv\u00e4ndig data att h\u00e4mtas till en fr\u00e5ga.\u00a0<\/p>\n\n\n\n<p>Du kan ocks\u00e5 anv\u00e4nda andra \u00e4delstenar, t.ex. <a href=\"https:\/\/github.com\/flyerhzm\/bullet\">kula<\/a> f\u00f6r att skr\u00e4ddarsy hela processen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ring bara det du beh\u00f6ver<\/strong><\/h2>\n\n\n\n<p>En annan anv\u00e4ndbar teknik f\u00f6r att \u00f6ka ActiveRecord-hastigheten \u00e4r att bara ringa de attribut som \u00e4r n\u00f6dv\u00e4ndiga f\u00f6r dina nuvarande \u00e4ndam\u00e5l. Detta \u00e4r s\u00e4rskilt anv\u00e4ndbart n\u00e4r din app b\u00f6rjar v\u00e4xa och antalet kolumner per tabell ocks\u00e5 \u00f6kar.<\/p>\n\n\n\n<p>L\u00e5t oss ta v\u00e5r tidigare kod som ett exempel och anta att vi bara beh\u00f6ver v\u00e4lja namn fr\u00e5n f\u00f6rfattare. S\u00e5 vi kan skriva om v\u00e5r controller:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code> def index\n     @posts = Post.all.includes(:author).select(\"name\").limit(20)\n slut<\/code><\/code> &lt;\/code<\/code> &lt;\/code<\/pre>\n\n\n\n<p>Nu instruerar vi v\u00e5r controller att hoppa \u00f6ver alla attribut utom det vi beh\u00f6ver.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rendera partialer p\u00e5 r\u00e4tt s\u00e4tt<\/strong><\/h2>\n\n\n\n<p>L\u00e5t oss s\u00e4ga att vi vill skapa en separat partial f\u00f6r v\u00e5ra inl\u00e4gg fr\u00e5n tidigare exempel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code><code>\n<\/code><\/code> &lt;\/code<\/code> &lt;\/code<\/code> &lt;\/code<\/pre>\n\n\n\n<p>Vid f\u00f6rsta anblicken ser den h\u00e4r koden korrekt ut. Men med ett st\u00f6rre antal inl\u00e4gg att rendera kommer hela processen att bli betydligt l\u00e5ngsammare. Detta beror p\u00e5 att <strong>R\u00e4ls <\/strong> anropar v\u00e5r partial med en ny iteration en g\u00e5ng till. Vi kan \u00e5tg\u00e4rda det genom att anv\u00e4nda <em>samlingar<\/em> funktion:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code><code><\/code><\/code> &lt;\/code<\/code> &lt;\/code<\/code> &lt;\/code<\/pre>\n\n\n\n<p>Nu, <strong>R\u00e4ls<\/strong> kommer automatiskt att r\u00e4kna ut vilken mall som ska anv\u00e4ndas och initiera den bara en g\u00e5ng.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Anv\u00e4nd bakgrundsbehandling<\/strong><\/h2>\n\n\n\n<p>Varje process som \u00e4r mer tidskr\u00e4vande och inte avg\u00f6rande f\u00f6r ditt nuvarande fl\u00f6de kan anses vara en bra kandidat f\u00f6r bakgrundsbehandling, t.ex. att skicka e-post, samla in statistik eller tillhandah\u00e5lla periodiska rapporter.&nbsp;<\/p>\n\n\n\n<p><strong>Sidekiq<\/strong> \u00e4r den vanligaste p\u00e4rlan f\u00f6r bakgrundsbehandling. Den anv\u00e4nder <strong>Redis<\/strong> f\u00f6r att lagra uppgifter. Du kan ocks\u00e5 styra fl\u00f6det i dina bakgrundsprocesser, dela upp dem i separata k\u00f6er och hantera minnesanv\u00e4ndningen f\u00f6r var och en av dem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Skriv mindre kod, anv\u00e4nd fler \u00e4delstenar<\/strong><\/h2>\n\n\n\n<p><strong>R\u00e4ls <\/strong> kom upp med ett enormt antal \u00e4delstenar som inte bara g\u00f6r ditt liv enklare och p\u00e5skyndar <a href=\"https:\/\/thecodest.co\/sv\/blog\/how-the-codests-team-extension-model-can-transform-your-in-house-development-team\/\">utvecklingsprocess<\/a>men ocks\u00e5 \u00f6ka prestandahastigheten i din applikation. P\u00e4rlor som Devise eller Pundit \u00e4r vanligtvis v\u00e4l testade n\u00e4r det g\u00e4ller deras hastighet och fungerar snabbare och s\u00e4krare \u00e4n kod som \u00e4r specialskriven f\u00f6r samma \u00e4ndam\u00e5l.<\/p>\n\n\n\n<p>Vid eventuella fr\u00e5gor till f\u00f6rb\u00e4ttring <em>Rails prestanda<\/em>, r\u00e4ckvidd <strong><a href=\"https:\/\/thecodest.co\">Codest-ingenj\u00f6rerna<\/a><\/strong> ut f\u00f6r att r\u00e5dg\u00f6ra med dina tvivel.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/thecodest.co\/careers#offers]\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/ruby-1-.png\" alt=\"Erbjudande f\u00f6r Ruby-utvecklare\"\/><\/a><\/figure>\n\n\n\n<p><strong>L\u00e4s mer om detta:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/pros-and-cons-of-ruby-software-development\/\">F\u00f6r- och nackdelar med mjukvaruutveckling med Ruby<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">R\u00e4ls och andra transportmedel<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-utveckling med TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Trots sina m\u00e5nga f\u00f6rdelar anses Ruby on Rails fortfarande vara ett relativt l\u00e5ngsamt webbramverk. Vi vet alla att Twitter har l\u00e4mnat Rails till f\u00f6rm\u00e5n f\u00f6r Scala. Men med n\u00e5gra smarta f\u00f6rb\u00e4ttringar kan du k\u00f6ra din app betydligt snabbare!<\/p>","protected":false},"author":2,"featured_media":3805,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Increase Rails Performance - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/sv\/blogg\/satt-att-oka-dina-ralsers-prestanda\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Increase Rails Performance\" \/>\n<meta property=\"og:description\" content=\"Despite its numerous advantages, Ruby on Rails is still considered to be a relatively slow web framework. We all know that Twitter has left Rails in favor of Scala. However, with a few cleaver improvements you can run your app significantly faster!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/sv\/blogg\/satt-att-oka-dina-ralsers-prestanda\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-17T10:11:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-04T21:01:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ways_to_increase_your_rails_performance.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"How to Increase Rails Performance\",\"datePublished\":\"2022-02-17T10:11:03+00:00\",\"dateModified\":\"2024-07-04T21:01:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\"},\"wordCount\":856,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ways_to_increase_your_rails_performance.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\",\"name\":\"How to Increase Rails Performance - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ways_to_increase_your_rails_performance.png\",\"datePublished\":\"2022-02-17T10:11:03+00:00\",\"dateModified\":\"2024-07-04T21:01:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ways_to_increase_your_rails_performance.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ways_to_increase_your_rails_performance.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Increase Rails Performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/sv\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hur man \u00f6kar Rails prestanda - The Codest","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:\/\/thecodest.co\/sv\/blogg\/satt-att-oka-dina-ralsers-prestanda\/","og_locale":"sv_SE","og_type":"article","og_title":"How to Increase Rails Performance","og_description":"Despite its numerous advantages, Ruby on Rails is still considered to be a relatively slow web framework. We all know that Twitter has left Rails in favor of Scala. However, with a few cleaver improvements you can run your app significantly faster!","og_url":"https:\/\/thecodest.co\/sv\/blogg\/satt-att-oka-dina-ralsers-prestanda\/","og_site_name":"The Codest","article_published_time":"2022-02-17T10:11:03+00:00","article_modified_time":"2024-07-04T21:01:27+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ways_to_increase_your_rails_performance.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"How to Increase Rails Performance","datePublished":"2022-02-17T10:11:03+00:00","dateModified":"2024-07-04T21:01:27+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/"},"wordCount":856,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ways_to_increase_your_rails_performance.png","articleSection":["Software Development"],"inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/","url":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/","name":"Hur man \u00f6kar Rails prestanda - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ways_to_increase_your_rails_performance.png","datePublished":"2022-02-17T10:11:03+00:00","dateModified":"2024-07-04T21:01:27+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ways_to_increase_your_rails_performance.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ways_to_increase_your_rails_performance.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"How to Increase Rails Performance"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/sv\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/comments?post=3804"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3804\/revisions"}],"predecessor-version":[{"id":8428,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3804\/revisions\/8428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media\/3805"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media?parent=3804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/categories?post=3804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/tags?post=3804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}