{"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":"mater-a-oke-skinneytelsen-din-pa","status":"publish","type":"post","link":"https:\/\/thecodest.co\/nb\/blog\/ways-to-increase-your-rails-performance\/","title":{"rendered":"Slik \u00f8ker du ytelsen til Rails"},"content":{"rendered":"<h2 class=\"wp-block-heading\"><strong>Ruby First<\/strong><\/h2>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/nb\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a><\/strong> er et sterkt objektorientert spr\u00e5k. Faktisk er (nesten) alt i <strong>Ruby<\/strong> er et objekt. Hvis du oppretter un\u00f8dvendige objekter, kan det koste programmet ditt mye ekstra minnebruk, s\u00e5 du m\u00e5 unng\u00e5 det.<\/p>\n\n\n\n<p>For \u00e5 m\u00e5le forskjellen bruker vi en <em><a href=\"https:\/\/github.com\/SamSaffron\/memory_profiler\">minne_profiler<\/a><\/em> gem og en innebygd Benchmark-modul for \u00e5 m\u00e5le tidsytelsen.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bruk bang!-metoder p\u00e5 strenger<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">krever \"memory_profiler\"\n\nreport = MemoryProfiler.report do\n<a href=\"https:\/\/thecodest.co\/nb\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> = \"X\" * 1024 * 1024 * 100\ndata = data.downcase\nslutt\n\nrapport.pretty_print<\/code><\/pre>\n\n\n\n<p>I listen nedenfor har vi opprettet en streng p\u00e5 100 MB og nedkortet hvert tegn i den. Referanseverdien v\u00e5r gir <a href=\"https:\/\/thecodest.co\/nb\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> f\u00f8lgende rapport:<\/p>\n\n\n\n<p><em>Totalt tildelt: 210765044 byte (6 objekter)<\/em><\/p>\n\n\n\n<p>Men hvis vi erstatter linje 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>Lese filer linje for linje<\/strong><\/h2>\n\n\n\n<p>Vi antar at vi trenger \u00e5 hente en stor datasamling med 2 millioner poster fra en csv-fil. Vanligvis vil det se slik ut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">krever \"benchmark\n\nBenchmark.bm do |x|\nx.rapport do\nFile.readlines(\"2mrecords.csv\").map! {|linje| linje.split(\",\")}\nend\nend<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">bruker system total real\n\n12.797000 2.437000 15.234000 (106.319865)<\/code><\/pre>\n\n\n\n<p>Det tok oss mer enn 106 sekunder \u00e5 laste ned hele filen. Ganske mye! Men vi kan gj\u00f8re denne prosessen raskere ved \u00e5 bytte ut <em>Kart!<\/em> metode med en enkel <em>mens<\/em> loop:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">krever 'benchmark'\n\nBenchmark.bm do |x|\nx.rapport do\nfile = File.open(\"2mrecords.csv\", \"r\")\nwhile line = file.gets\nline.split(\",\")\nend\nend\nend<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">bruker system total real\n\n6.078000 0.250000 6.328000 ( 6.649422)<\/code><\/pre>\n\n\n\n<p>Kj\u00f8retiden har n\u00e5 sunket drastisk siden <em>Kart!<\/em> metoden tilh\u00f8rer en bestemt klasse, som <em>Hash#map<\/em> eller <em>Array#map<\/em>, hvor <strong>Ruby<\/strong> vil lagre hver linje i den analyserte filen i minnet s\u00e5 lenge den kj\u00f8res. <strong>Rubys s\u00f8ppelsamler <\/strong>vil ikke frigj\u00f8re minnet f\u00f8r disse iteratorene er ferdig kj\u00f8rt. Hvis du leser den linje for linje, vil GC imidlertid flytte minnet fra de foreg\u00e5ende linjene n\u00e5r det ikke er n\u00f8dvendig.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Unng\u00e5 metodeiteratorer p\u00e5 st\u00f8rre samlinger<\/strong><\/h2>\n\n\n\n<p>Dette er en forlengelse av det forrige punktet med et mer vanlig eksempel. Som jeg nevnte tidligere, <a href=\"https:\/\/thecodest.co\/blog\/high-demand-for-ruby-developers\/\">Ruby<\/a> iteratorer er objektmetoder, og de frigj\u00f8r ikke minnet s\u00e5 lenge de utf\u00f8res. I liten skala er forskjellen meningsl\u00f8s (og metoder som <em>kart<\/em> virker mer leselig). N\u00e5r det gjelder st\u00f8rre datasett, er det imidlertid alltid en god id\u00e9 \u00e5 vurdere \u00e5 erstatte den med mer grunnleggende sl\u00f8yfer. Som i eksempelet nedenfor:<\/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 |line|\n#gj\u00f8r noe\nend<\/code><\/pre>\n\n\n\n<p>og etter 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.shift\n#gj\u00f8r noe\nslutt\n\"`<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bruk String::&lt;&lt;-metoden<\/strong><\/h2>\n\n\n\n<p>Dette er et raskt, men s\u00e6rdeles nyttig tips. Hvis du legger til en streng til en annen ved hjelp av +=-operatoren bak kulissene. <strong>Ruby <\/strong> vil opprette et ekstra objekt. S\u00e5, dette:\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>Det betyr faktisk dette:<\/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\u00f8ren vil unng\u00e5 det, og spare deg for litt 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>La oss snakke om Rails<\/strong><\/h2>\n\n\n\n<p>Den <strong>Rails-rammeverket <\/strong> har massevis av \"<em>problemer<\/em>\" som lar deg optimalisere din <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-code-refactoring\/\">kode<\/a> raskt og uten for mye ekstra innsats.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ivrig lasting, ogs\u00e5 kjent som n+1-sp\u00f8rringsproblemet<\/strong><\/h2>\n\n\n\n<p>La oss anta at vi har to tilknyttede modeller, Post og Author:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">class Forfatter &lt; ApplicationRecord\nhas_many :posts\nend\n\nclass Post &lt; ApplicationRecord\nbelongs_to :author\nend<\/code><\/pre>\n\n\n\n<p>Vi \u00f8nsker \u00e5 hente alle innleggene i kontrolleren v\u00e5r og gjengi dem i en visning med forfatterne:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kontroll\u00f8r\n\ndef index\n@posts = Post.all.limit(20)\nend\n\nvisning<\/code><\/pre>\n\n\n\n<p>I kontrolleren, <a href=\"https:\/\/thecodest.co\/blog\/a-simple-ruby-application-from-scratch-with-active-record\/\">ActiveRecord<\/a> vil bare opprette \u00e9n sp\u00f8rring for \u00e5 finne innleggene v\u00e5re. Men senere vil det ogs\u00e5 utl\u00f8se ytterligere 20 sp\u00f8rringer for \u00e5 finne hver forfatter tilsvarende - noe som tar ekstra tid! Heldigvis kommer Rails med en rask l\u00f8sning for \u00e5 kombinere disse sp\u00f8rringene til en enkelt. Ved \u00e5 bruke <em>inkluderer<\/em> metoden, kan vi omskrive kontrolleren v\u00e5r p\u00e5 denne m\u00e5ten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code> def index\n     @posts = Post.all.includes(:author).limit(20)\n end<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>Inntil videre vil bare de n\u00f8dvendige dataene bli hentet inn i \u00e9n sp\u00f8rring.\u00a0<\/p>\n\n\n\n<p>Du kan ogs\u00e5 bruke andre edelstener, for eksempel <a href=\"https:\/\/github.com\/flyerhzm\/bullet\">kule<\/a> for \u00e5 tilpasse hele prosessen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ring bare det du trenger<\/strong><\/h2>\n\n\n\n<p>En annen nyttig teknikk for \u00e5 \u00f8ke hastigheten i ActiveRecord er \u00e5 bare kalle opp de attributtene som er n\u00f8dvendige for det aktuelle form\u00e5let. Dette er spesielt nyttig n\u00e5r appen begynner \u00e5 vokse og antallet kolonner per tabell \u00f8ker.<\/p>\n\n\n\n<p>La oss ta den forrige koden som et eksempel og anta at vi bare trenger \u00e5 velge navn fra forfattere. Da kan vi skrive om kontrolleren v\u00e5r:<\/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 end<\/code><\/code> &lt;\/code<\/code> &lt;\/code<\/pre>\n\n\n\n<p>N\u00e5 instruerer vi kontrolleren v\u00e5r om \u00e5 hoppe over alle attributter unntatt det vi trenger.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Gjengi partialer p\u00e5 riktig m\u00e5te<\/strong><\/h2>\n\n\n\n<p>La oss si at vi \u00f8nsker \u00e5 opprette en egen partiell for innleggene v\u00e5re fra tidligere eksempler:<\/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>Ved f\u00f8rste \u00f8yekast ser denne koden riktig ut. Men med et st\u00f8rre antall innlegg som skal gjengis, vil hele prosessen g\u00e5 betydelig saktere. Dette skyldes at <strong>Rails <\/strong> p\u00e5kaller partialen v\u00e5r med en ny iterasjon igjen. Vi kan fikse det ved \u00e5 bruke <em>samlinger<\/em> funksjon:<\/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>N\u00e5, <strong>Rails<\/strong> vil automatisk finne ut hvilken mal som skal brukes, og initialiserer den bare \u00e9n gang.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bruk bakgrunnsbehandling<\/strong><\/h2>\n\n\n\n<p>Alle prosesser som er mer tidkrevende og ikke er avgj\u00f8rende for den n\u00e5v\u00e6rende flyten, kan v\u00e6re gode kandidater for bakgrunnsbehandling, for eksempel sending av e-post, innhenting av statistikk eller periodiske rapporter.&nbsp;<\/p>\n\n\n\n<p><strong>Sidekiq<\/strong> er den mest brukte perlen for bakgrunnsbehandling. Den bruker <strong>Redis<\/strong> for \u00e5 lagre oppgaver. Du kan ogs\u00e5 kontrollere flyten i bakgrunnsprosessene dine, dele dem inn i separate k\u00f8er og administrere minnebruken for hver enkelt av dem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Skriv mindre kode, bruk flere edelstener<\/strong><\/h2>\n\n\n\n<p><strong>Rails <\/strong> har kommet opp med et enormt antall perler som ikke bare gj\u00f8r livet ditt enklere og akselererer <a href=\"https:\/\/thecodest.co\/nb\/blog\/how-the-codests-team-extension-model-can-transform-your-in-house-development-team\/\">utviklingsprosess<\/a>men ogs\u00e5 \u00f8ke ytelseshastigheten til applikasjonen din. Gems som Devise eller Pundit er vanligvis godt testet med hensyn til hastighet og fungerer raskere og sikrere enn kode som er spesialskrevet for samme form\u00e5l.<\/p>\n\n\n\n<p>I tilfelle sp\u00f8rsm\u00e5l til forbedring <em>Rails-ytelse<\/em>, rekkevidde <strong><a href=\"https:\/\/thecodest.co\">Codest-ingeni\u00f8rene<\/a><\/strong> ut for \u00e5 konsultere din tvil.<\/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=\"Ruby Developer Offer\"\/><\/a><\/figure>\n\n\n\n<p><strong>Les mer om dette:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/pros-and-cons-of-ruby-software-development\/\">Fordeler og ulemper med Ruby-programvareutvikling<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">Skinner og andre transportmidler<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-utvikling med TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Til tross for sine mange fordeler anses Ruby on Rails fortsatt for \u00e5 v\u00e6re et relativt tregt webrammeverk. Vi vet alle at Twitter har forlatt Rails til fordel for Scala. Men med noen f\u00e5 smarte forbedringer kan du kj\u00f8re appen din betydelig raskere!<\/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\/nb\/blogg\/mater-a-oke-skinneytelsen-din-pa\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\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\/nb\/blogg\/mater-a-oke-skinneytelsen-din-pa\/\" \/>\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\":\"nb-NO\",\"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\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\",\"@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\\\/nb\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Slik \u00f8ker du ytelsen til Rails - 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\/nb\/blogg\/mater-a-oke-skinneytelsen-din-pa\/","og_locale":"nb_NO","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\/nb\/blogg\/mater-a-oke-skinneytelsen-din-pa\/","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":"nb-NO","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":"Slik \u00f8ker du ytelsen til Rails - 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":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO","@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\/nb\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/comments?post=3804"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3804\/revisions"}],"predecessor-version":[{"id":8428,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3804\/revisions\/8428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media\/3805"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media?parent=3804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/categories?post=3804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/tags?post=3804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}