{"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":"mader-at-oge-din-skinnepraestation-pa","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/ways-to-increase-your-rails-performance\/","title":{"rendered":"S\u00e5dan \u00f8ger du Rails' ydeevne"},"content":{"rendered":"<h2 class=\"wp-block-heading\"><strong>Ruby First<\/strong><\/h2>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/da\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a><\/strong> er et st\u00e6rkt objektorienteret sprog. Faktisk er (n\u00e6sten) alt i <strong>Ruby<\/strong> er et objekt. Hvis du opretter un\u00f8dvendige objekter, kan det koste dit program en masse ekstra hukommelse, s\u00e5 det skal du undg\u00e5.<\/p>\n\n\n\n<p>For at m\u00e5le forskellen bruger vi en <em><a href=\"https:\/\/github.com\/SamSaffron\/memory_profiler\">hukommelse_profiler<\/a><\/em> gem og et indbygget Benchmark-modul til at m\u00e5le tidspr\u00e6station.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Brug bang!-metoder p\u00e5 strenge<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kr\u00e6ver \"memory_profiler\"\n\nrapport = MemoryProfiler.rapport do\n<a href=\"https:\/\/thecodest.co\/da\/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 nedenst\u00e5ende liste har vi oprettet en streng p\u00e5 100 MB og nedskaleret hvert tegn i den. Vores benchmark giver <a href=\"https:\/\/thecodest.co\/da\/blog\/why-us-companies-are-opting-for-polish-developers\/\">os<\/a> den f\u00f8lgende rapport:<\/p>\n\n\n\n<p><em>I alt allokeret: 210765044 bytes (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>.<\/pre>\n\n\n\n<p><code> <\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>L\u00e6s filer linje for linje<\/strong><\/h2>\n\n\n\n<p>Angiveligt skal vi hente en stor datasamling p\u00e5 2 millioner poster fra en csv-fil. Typisk ville det se s\u00e5dan ud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kr\u00e6ver 'benchmark'\n\nBenchmark.bm do |x|\nx.report do\nFile.readlines(\"2mrecords.csv\").map! {|line| line.split(\",\")}\nend\nend<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">bruger system total real\n\n12.797000 2.437000 15.234000 (106.319865)<\/code><\/pre>\n\n\n\n<p>Det tog os mere end 106 sekunder at downloade hele filen. Det er ret meget! Men vi kan fremskynde denne proces ved at erstatte <em>kort!<\/em> metode med en simpel <em>mens<\/em> loop:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">kr\u00e6ver 'benchmark'\n\nBenchmark.bm do |x|\nx.rapport do\nfile = File.open(\"2mrecords.csv\", \"r\")\nwhile line = file.gets\nlinje.split(\",\")\nend\nend\nslut<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">bruger system total real\n\n6.078000 0.250000 6.328000 ( 6.649422)<\/code><\/pre>\n\n\n\n<p>K\u00f8retiden er nu faldet drastisk siden <em>kort!<\/em> metode h\u00f8rer til en bestemt klasse, som f.eks. <em>Hash#map<\/em> eller <em>Array#map<\/em>, hvor <strong>Ruby<\/strong> vil gemme hver linje i den analyserede fil i hukommelsen, s\u00e5 l\u00e6nge den udf\u00f8res. <strong>Rubys affaldsopsamler <\/strong>vil ikke frigive hukommelsen, f\u00f8r disse iteratorer er fuldt udf\u00f8rte. Men hvis man l\u00e6ser den linje for linje, vil GC flytte hukommelsen fra de foreg\u00e5ende linjer, n\u00e5r det ikke er n\u00f8dvendigt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Undg\u00e5 metode-iteratorer p\u00e5 st\u00f8rre samlinger<\/strong><\/h2>\n\n\n\n<p>Dette er en udvidelse af det forrige punkt med et mere almindeligt eksempel. Som jeg n\u00e6vnte, <a href=\"https:\/\/thecodest.co\/blog\/high-demand-for-ruby-developers\/\">Ruby<\/a> iteratorer er objektmetoder, og de frigiver ikke hukommelsen, s\u00e5 l\u00e6nge de udf\u00f8res. P\u00e5 en lille skala er forskellen meningsl\u00f8s (og metoder som f.eks. <em>kort<\/em> virker mere l\u00e6sevenlig). Men n\u00e5r det drejer sig om st\u00f8rre datas\u00e6t, er det altid en god id\u00e9 at overveje at erstatte det med mere grundl\u00e6ggende loops. Som i eksemplet 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#g\u00f8r noget\nend<\/code><\/pre>\n\n\n\n<p>og efter refaktorering:<\/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\u00f8r noget\nslut\n\"`<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Brug metoden String::&lt;&lt;<\/strong><\/h2>\n\n\n\n<p>Dette er et hurtigt, men s\u00e6rdeles nyttigt tip. Hvis du tilf\u00f8jer en streng til en anden ved hj\u00e6lp af +=-operatoren bag kulisserne. <strong>Ruby <\/strong> vil skabe 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>.<\/pre>\n\n\n\n<p>Det betyder faktisk det her:<\/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>.<\/pre>\n\n\n\n<p>Operat\u00f8ren ville undg\u00e5 det og spare dig for noget hukommelse:<\/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>.<\/code>.<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Lad os tale om Rails<\/strong><\/h2>\n\n\n\n<p>Den <strong>Rails-rammev\u00e6rk <\/strong> har masser af \"<em>problemer<\/em>\", der giver dig mulighed for at optimere din <a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-code-refactoring\/\">Kode<\/a> hurtigt og uden for meget ekstra arbejde.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Eager Loading AKA n+1 foresp\u00f8rgselsproblem<\/strong><\/h2>\n\n\n\n<p>Lad os antage, 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 Author &lt; ApplicationRecord\nhas_many :indl\u00e6g\nslut\n\nclass Indl\u00e6g &lt; ApplicationRecord\nh\u00f8rer til :author\nend<\/code><\/pre>\n\n\n\n<p>Vi vil hente alle indl\u00e6ggene i vores controller og gengive dem i en visning med deres forfattere:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">controller\n\ndef indeks\n@posts = Post.all.limit(20)\nslut\n\nvisning<\/code><\/pre>\n\n\n\n<p>I controlleren, <a href=\"https:\/\/thecodest.co\/blog\/a-simple-ruby-application-from-scratch-with-active-record\/\">ActiveRecord<\/a> vil kun oprette \u00e9n foresp\u00f8rgsel for at finde vores indl\u00e6g. Men senere vil det ogs\u00e5 udl\u00f8se yderligere 20 foresp\u00f8rgsler for at finde hver enkelt forfatter - og det tager ekstra tid! Heldigvis kommer Rails med en hurtig l\u00f8sning til at kombinere disse foresp\u00f8rgsler til en enkelt. Ved at bruge <em>omfatter<\/em> metode, kan vi omskrive vores controller p\u00e5 denne m\u00e5de:<\/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 slut<\/code><\/code>.<\/pre>\n\n\n\n<p>Indtil videre vil kun de n\u00f8dvendige data blive hentet i en foresp\u00f8rgsel.\u00a0<\/p>\n\n\n\n<p>Du kan ogs\u00e5 bruge andre perler, som f.eks. <a href=\"https:\/\/github.com\/flyerhzm\/bullet\">kugle<\/a> for at tilpasse hele processen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ring kun til det, du har brug for<\/strong><\/h2>\n\n\n\n<p>En anden nyttig teknik til at \u00f8ge hastigheden i ActiveRecord er kun at kalde de attributter, som er n\u00f8dvendige til dit aktuelle form\u00e5l. Det er is\u00e6r nyttigt, n\u00e5r din app begynder at vokse, og antallet af kolonner pr. tabel ogs\u00e5 stiger.<\/p>\n\n\n\n<p>Lad os tage vores tidligere kode som eksempel og antage, at vi kun har brug for at v\u00e6lge navne fra forfattere. S\u00e5 vi kan omskrive vores 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>.<\/code>.<\/pre>\n\n\n\n<p>Nu beder vi vores controller om at springe alle attributter over undtagen den, vi skal bruge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Gengiv partialer korrekt<\/strong><\/h2>\n\n\n\n<p>Lad os sige, at vi vil oprette en separat partial til vores indl\u00e6g fra tidligere eksempler:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code><code> \n  \n .\n<\/code><\/code>.<\/code>.<\/code>.<\/pre>\n\n\n\n<p>Ved f\u00f8rste \u00f8jekast ser denne kode korrekt ud. Men med et st\u00f8rre antal indl\u00e6g, der skal gengives, vil hele processen blive betydeligt langsommere. Dette skyldes, at <strong>Skinner <\/strong> p\u00e5kalder vores partial med en ny iteration igen. Vi kan l\u00f8se det ved at bruge <em>Samlinger<\/em> funktion:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code><code> .<\/code><\/code>.<\/code>.<\/code>.<\/pre>\n\n\n\n<p>Og nu, <strong>Skinner<\/strong> finder automatisk ud af, hvilken skabelon der skal bruges, og initialiserer den kun \u00e9n gang.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Brug baggrundsbehandling<\/strong><\/h2>\n\n\n\n<p>Enhver proces, der er mere tidskr\u00e6vende og ikke afg\u00f8rende for dit nuv\u00e6rende flow, kan betragtes som en god kandidat til baggrundsbehandling, f.eks. at sende e-mails, indsamle statistikker eller levere periodiske rapporter.&nbsp;<\/p>\n\n\n\n<p><strong>Sidekiq<\/strong> er den mest anvendte perle til baggrundsbehandling. Den bruger <strong>Redis<\/strong> til at gemme opgaver. Det giver dig ogs\u00e5 mulighed for at kontrollere flowet i dine baggrundsprocesser, opdele dem i separate k\u00f8er og styre hukommelsesforbruget for hver enkelt af dem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Skriv mindre kode, brug flere perler<\/strong><\/h2>\n\n\n\n<p><strong>Skinner <\/strong> kom op med et enormt antal perler, som ikke kun g\u00f8r dit liv lettere og fremskynder processen. <a href=\"https:\/\/thecodest.co\/da\/blog\/how-the-codests-team-extension-model-can-transform-your-in-house-development-team\/\">udviklingsproces<\/a>men ogs\u00e5 \u00f8ge ydeevnen i din applikation. Gems som Devise eller Pundit er som regel gennemtestede med hensyn til deres hastighed og fungerer hurtigere og mere sikkert end kode, der er specialskrevet til samme form\u00e5l.<\/p>\n\n\n\n<p>I tilf\u00e6lde af sp\u00f8rgsm\u00e5l til forbedring <em>Rails' ydeevne<\/em>, r\u00e6kkevidde <strong><a href=\"https:\/\/thecodest.co\">Codest-ingeni\u00f8rerne<\/a><\/strong> ud for at konsultere din tvivl.<\/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-udvikler-tilbud\"\/><\/a><\/figure>\n\n\n\n<p><strong>L\u00e6s mere om det:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/pros-and-cons-of-ruby-software-development\/\">Fordele og ulemper ved Ruby-softwareudvikling<\/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-udvikling med TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>P\u00e5 trods af de mange fordele anses Ruby on Rails stadig for at v\u00e6re et relativt langsomt webframework. Vi ved alle, at Twitter har forladt Rails til fordel for Scala. Men med et par smarte forbedringer kan du k\u00f8re din app betydeligt hurtigere!<\/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 plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-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\/da\/blog\/mader-at-oge-din-skinnepraestation-pa\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Increase Rails Performance - The Codest\" \/>\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\/da\/blog\/mader-at-oge-din-skinnepraestation-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,\"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\":\"da-DK\",\"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\",\"author\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@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\":\"\",\"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\":\"da-DK\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@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\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"S\u00e5dan \u00f8ger du Rails' ydeevne - 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\/da\/blog\/mader-at-oge-din-skinnepraestation-pa\/","og_locale":"da_DK","og_type":"article","og_title":"How to Increase Rails Performance - The Codest","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\/da\/blog\/mader-at-oge-din-skinnepraestation-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,"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":"da-DK","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":"S\u00e5dan \u00f8ger du Rails' ydeevne - 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","author":{"@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@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":"","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":"da-DK"},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"da-DK","@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\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3804"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3804\/revisions"}],"predecessor-version":[{"id":8428,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3804\/revisions\/8428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3805"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}