{"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":"tapoja-lisata-kiskojen-suorituskykya","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fi\/blog\/ways-to-increase-your-rails-performance\/","title":{"rendered":"Kuinka lis\u00e4t\u00e4 Railsin suorituskyky\u00e4"},"content":{"rendered":"<h2 class=\"wp-block-heading\"><strong>Ruby First<\/strong><\/h2>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/fi\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a><\/strong> on vahvasti oliosuuntautunut kieli. Itse asiassa (l\u00e4hes) kaikki <strong>Ruby<\/strong> on objekti. Tarpeettomien objektien luominen voi aiheuttaa ohjelmallesi paljon ylim\u00e4\u00e4r\u00e4ist\u00e4 muistink\u00e4ytt\u00f6\u00e4, joten sit\u00e4 on v\u00e4ltett\u00e4v\u00e4.<\/p>\n\n\n\n<p>Eroa mitataan k\u00e4ytt\u00e4m\u00e4ll\u00e4 <em><a href=\"https:\/\/github.com\/SamSaffron\/memory_profiler\">memory_profiler<\/a><\/em> helmi ja sis\u00e4\u00e4nrakennettu Benchmark-moduuli ajan suorituskyvyn mittaamiseen.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>K\u00e4yt\u00e4 bang! -metodeja merkkijonoille<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">vaativat \"memory_profiler\"\n\nreport = MemoryProfiler.report do\n<a href=\"https:\/\/thecodest.co\/fi\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">tiedot<\/a> = \"X\" * 1024 * 1024 * 100\ndata = data.downcase\nend\n\nreport.pretty_print<\/code><\/pre>\n\n\n\n<p>Alla olevassa luettelossa luotiin 100 Mt:n merkkijono ja v\u00e4hennettiin jokainen sen sis\u00e4lt\u00e4m\u00e4 merkki. Vertailulaskelmamme antaa <a href=\"https:\/\/thecodest.co\/fi\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> seuraava kertomus:<\/p>\n\n\n\n<p><em>Yhteens\u00e4 my\u00f6nnetty: 210765044 tavua (6 objektia)<\/em><\/p>\n\n\n\n<p>Jos kuitenkin korvataan rivi 6 seuraavasti:<\/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>Lue tiedostoja rivi rivilt\u00e4<\/strong><\/h2>\n\n\n\n<p>Oletettavasti meid\u00e4n on haettava valtava 2 miljoonan tietueen kokoelma csv-tiedostosta. Tyypillisesti se n\u00e4ytt\u00e4isi t\u00e4lt\u00e4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">vaatia '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=\"\">k\u00e4ytt\u00e4j\u00e4 j\u00e4rjestelm\u00e4 yhteens\u00e4 todellinen\n\n12.797000 2.437000 15.234000 (106.319865)<\/code><\/pre>\n\n\n\n<p>Tiedoston lataaminen kokonaisuudessaan kesti yli 106 sekuntia. Aika paljon! Voimme kuitenkin nopeuttaa t\u00e4t\u00e4 prosessia korvaamalla tiedoston <em>kartta!<\/em> menetelm\u00e4 yksinkertaisella <em>kun taas<\/em> silmukka:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">vaatia 'benchmark'\n\nBenchmark.bm do |x|\nx.report 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=\"\">k\u00e4ytt\u00e4j\u00e4 j\u00e4rjestelm\u00e4 yhteens\u00e4 todellinen\n\n6.078000 0.250000 6.328000 ( 6.649422)<\/code><\/pre>\n\n\n\n<p>Juoksuaika on nyt laskenut huomattavasti, koska <em>kartta!<\/em> menetelm\u00e4 kuuluu tiettyyn luokkaan, kuten <em>Hash#map<\/em> tai <em>Array#map<\/em>, jossa <strong>Ruby<\/strong> tallentaa jokaisen j\u00e4sennetyn tiedoston rivin muistiin niin kauan kuin se suoritetaan. <strong>Rubyn roskienker\u00e4\u00e4j\u00e4 <\/strong>ei vapauta muistia ennen kuin iteraattorit on suoritettu kokonaan. Sen lukeminen rivi rivilt\u00e4 kuitenkin GC:n avulla siirt\u00e4\u00e4 muistia edellisilt\u00e4 riveilt\u00e4, kun se ei ole tarpeen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>V\u00e4lt\u00e4 menetelmien iteraattoreita suuremmissa kokoelmissa<\/strong><\/h2>\n\n\n\n<p>T\u00e4m\u00e4 on jatkoa edelliselle kohdalle, ja esimerkkin\u00e4 on yleisempi esimerkki. Kuten mainitsin, <a href=\"https:\/\/thecodest.co\/blog\/high-demand-for-ruby-developers\/\">Ruby<\/a> iteraattorit ovat objektimetodeja, eiv\u00e4tk\u00e4 ne vapauta muistia niin kauan kuin niit\u00e4 suoritetaan. Pieness\u00e4 mittakaavassa ero on merkitykset\u00f6n (ja metodit kuten esim. <em>kartta<\/em> vaikuttaa luettavammalta). Suurempien tietokokonaisuuksien kohdalla on kuitenkin aina syyt\u00e4 harkita sen korvaamista yksinkertaisemmilla silmukoilla. Kuten alla olevassa esimerkiss\u00e4:<\/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#ehd\u00e4 jotain\nend<\/code><\/pre>\n\n\n\n<p>ja refaktoroinnin j\u00e4lkeen:<\/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\nline = randoms.shift\n#ehd\u00e4 jotain\nend\n\"`<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>K\u00e4yt\u00e4 String::&lt;&lt; -menetelm\u00e4\u00e4<\/strong><\/h2>\n\n\n\n<p>T\u00e4m\u00e4 on nopea mutta erityisen hy\u00f6dyllinen vinkki. Jos liit\u00e4t yhden merkkijonon toiseen k\u00e4ytt\u00e4m\u00e4ll\u00e4 +=-operaattoria taustalla. <strong>Ruby <\/strong> luo ylim\u00e4\u00e4r\u00e4isen objektin. Joten t\u00e4m\u00e4:\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>Tarkoittaa oikeastaan t\u00e4t\u00e4:<\/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>Operaattori v\u00e4ltt\u00e4isi sen ja s\u00e4\u00e4st\u00e4isi muistia:<\/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>Puhutaan Railsista<\/strong><\/h2>\n\n\n\n<p>The <strong>Rails-kehys <\/strong> on runsaasti \"<em>gotchas<\/em>\", jonka avulla voit optimoida <a href=\"https:\/\/thecodest.co\/fi\/dictionary\/what-is-code-refactoring\/\">koodi<\/a> nopeasti ja ilman suurempia lis\u00e4ponnistuksia.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Eager Loading eli n+1-kyselyongelma.<\/strong><\/h2>\n\n\n\n<p>Oletetaan, ett\u00e4 meill\u00e4 on kaksi toisiinsa liittyv\u00e4\u00e4 mallia, Post ja Author:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">class Author &lt; ApplicationRecord\nhas_many :posts\nend\n\nclass Post &lt; ApplicationRecord\nbelongs_to :author\nend<\/code><\/pre>\n\n\n\n<p>Haluamme noutaa kaikki viestit ohjaimessamme ja n\u00e4ytt\u00e4\u00e4 ne n\u00e4kym\u00e4ss\u00e4 tekij\u00f6ineen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">ohjain\n\ndef index\n@posts = Post.all.limit(20)\nend\n\nview<\/code><\/pre>\n\n\n\n<p>Ohjaimessa, <a href=\"https:\/\/thecodest.co\/blog\/a-simple-ruby-application-from-scratch-with-active-record\/\">ActiveRecord<\/a> luo vain yhden kyselyn, jolla l\u00f6yd\u00e4mme viestit. My\u00f6hemmin se k\u00e4ynnist\u00e4\u00e4 kuitenkin viel\u00e4 20 muuta kysely\u00e4 kunkin kirjoittajan l\u00f6yt\u00e4miseksi, mik\u00e4 vie ylim\u00e4\u00e4r\u00e4ist\u00e4 aikaa! Onneksi Railsissa on nopea ratkaisu n\u00e4iden kyselyjen yhdist\u00e4miseen yhdeksi kyselyksi. K\u00e4ytt\u00e4m\u00e4ll\u00e4 <em>sis\u00e4lt\u00e4\u00e4<\/em> metodia, voimme kirjoittaa ohjaimemme uudelleen n\u00e4in:<\/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><\/pre>\n\n\n\n<p>Toistaiseksi vain tarvittavat tiedot haetaan yhteen kyselyyn.\u00a0<\/p>\n\n\n\n<p>Voit k\u00e4ytt\u00e4\u00e4 my\u00f6s muita jalokivi\u00e4, kuten esim. <a href=\"https:\/\/github.com\/flyerhzm\/bullet\">bullet<\/a> muokata koko prosessia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Soita vain mit\u00e4 tarvitset<\/strong><\/h2>\n\n\n\n<p>Toinen k\u00e4ytt\u00f6kelpoinen tekniikka ActiveRecordin nopeuden lis\u00e4\u00e4miseksi on kutsua vain niit\u00e4 attribuutteja, jotka ovat v\u00e4ltt\u00e4m\u00e4tt\u00f6mi\u00e4 t\u00e4m\u00e4nhetkisen k\u00e4ytt\u00f6tarkoituksesi kannalta. T\u00e4m\u00e4 on erityisen hy\u00f6dyllist\u00e4, kun sovelluksesi alkaa kasvaa ja taulukkokohtaisten sarakkeiden m\u00e4\u00e4r\u00e4 kasvaa.<\/p>\n\n\n\n<p>Otetaan edellinen koodimme esimerkkin\u00e4 ja oletetaan, ett\u00e4 meid\u00e4n on valittava vain nimet kirjoittajista. Voimme siis kirjoittaa ohjaimemme uudelleen:<\/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><\/code><\/pre>\n\n\n\n<p>Nyt annamme ohjaimellemme ohjeen ohittaa kaikki muut attribuutit paitsi sen, jota tarvitsemme.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Render\u00f6i osatekij\u00e4t oikein<\/strong><\/h2>\n\n\n\n<p>Oletetaan, ett\u00e4 haluamme luoda erillisen osittaisen osion edellisiss\u00e4 esimerkeiss\u00e4 mainituille viesteillemme:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code><code><code>\n<\/code><\/code><\/code><\/code><\/pre>\n\n\n\n<p>Ensi silm\u00e4yksell\u00e4 t\u00e4m\u00e4 koodi n\u00e4ytt\u00e4\u00e4 oikealta. Kun render\u00f6it\u00e4vien viestien m\u00e4\u00e4r\u00e4 on kuitenkin suurempi, koko prosessi on huomattavasti hitaampi. T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 <strong>Kiskot <\/strong> kutsuu osittaisen toistomme uudella iteraatiolla j\u00e4lleen kerran. Voimme korjata sen k\u00e4ytt\u00e4m\u00e4ll\u00e4 <em>kokoelmat<\/em> ominaisuus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\"><code><code><code><code><\/code><\/code><\/code><\/code><\/pre>\n\n\n\n<p>Nyt, <strong>Kiskot<\/strong> selvitt\u00e4\u00e4 automaattisesti, mit\u00e4 mallia tulisi k\u00e4ytt\u00e4\u00e4, ja alustaa sen vain kerran.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>K\u00e4yt\u00e4 taustak\u00e4sittely\u00e4<\/strong><\/h2>\n\n\n\n<p>Jokainen prosessi, joka on aikaa viev\u00e4mpi eik\u00e4 ole ratkaisevan t\u00e4rke\u00e4 nykyiselle prosessivirrallesi, voidaan katsoa sopivaksi taustak\u00e4sittelyyn, esimerkiksi s\u00e4hk\u00f6postien l\u00e4hett\u00e4minen, tilastojen ker\u00e4\u00e4minen tai s\u00e4\u00e4nn\u00f6llisten raporttien laatiminen.&nbsp;<\/p>\n\n\n\n<p><strong>Sidekiq<\/strong> on yleisimmin k\u00e4ytetty helmi taustak\u00e4sittelyyn. Se k\u00e4ytt\u00e4\u00e4 <strong>Redis<\/strong> teht\u00e4vien tallentamiseen. Sen avulla voit my\u00f6s hallita taustaprosessien kulkua, jakaa ne erillisiin jonoihin ja hallita muistin k\u00e4ytt\u00f6\u00e4 kunkin prosessin osalta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kirjoita v\u00e4hemm\u00e4n koodia, k\u00e4yt\u00e4 enemm\u00e4n helmi\u00e4<\/strong><\/h2>\n\n\n\n<p><strong>Kiskot <\/strong> keksi valtava m\u00e4\u00e4r\u00e4 helmi\u00e4, jotka eiv\u00e4t ainoastaan tee el\u00e4m\u00e4st\u00e4si helpompaa ja nopeuttaa <a href=\"https:\/\/thecodest.co\/fi\/blog\/how-the-codests-team-extension-model-can-transform-your-in-house-development-team\/\">kehitysprosessi<\/a>, mutta lis\u00e4\u00e4 my\u00f6s sovelluksesi suorituskyvyn nopeutta. Devisen tai Punditin kaltaiset jalokivet ovat yleens\u00e4 hyvin testattuja nopeutensa suhteen ja toimivat nopeammin ja varmemmin kuin samaa tarkoitusta varten r\u00e4\u00e4t\u00e4l\u00f6ity koodi.<\/p>\n\n\n\n<p>Jos sinulla on kysytt\u00e4v\u00e4\u00e4 <em>Railsin suorituskyky<\/em>, reach <strong><a href=\"https:\/\/thecodest.co\">Codest-insin\u00f6\u00f6rit<\/a><\/strong> ulos kuulemaan ep\u00e4ilyksi\u00e4si.<\/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-kehitt\u00e4j\u00e4 Tarjous\"\/><\/a><\/figure>\n\n\n\n<p><strong>Lue lis\u00e4\u00e4:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/pros-and-cons-of-ruby-software-development\/\">Ruby-ohjelmistokehityksen hyv\u00e4t ja huonot puolet<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">Kiskot ja muut liikennev\u00e4lineet<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-kehitys TMUX, Vim, Fzf + Ripgrep -ohjelmilla<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Lukuisista eduistaan huolimatta Ruby on Rails:t\u00e4 pidet\u00e4\u00e4n edelleen suhteellisen hitaana web-kehyksen\u00e4. Me kaikki tied\u00e4mme, ett\u00e4 Twitter on j\u00e4tt\u00e4nyt Railsin Scalan hyv\u00e4ksi. Muutamalla n\u00e4pp\u00e4r\u00e4ll\u00e4 parannuksella voit kuitenkin ajaa sovelluksesi huomattavasti nopeammin!<\/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\/fi\/blogi\/tapoja-lisata-kiskojen-suorituskykya\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\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\/fi\/blogi\/tapoja-lisata-kiskojen-suorituskykya\/\" \/>\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\":\"fi\",\"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\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ways-to-increase-your-rails-performance\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@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\":\"fi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@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\":\"fi\",\"@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\\\/fi\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Miten lis\u00e4t\u00e4 Rails suorituskyky\u00e4 - 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\/fi\/blogi\/tapoja-lisata-kiskojen-suorituskykya\/","og_locale":"fi_FI","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\/fi\/blogi\/tapoja-lisata-kiskojen-suorituskykya\/","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":"fi","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":"Miten lis\u00e4t\u00e4 Rails suorituskyky\u00e4 - 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":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ways-to-increase-your-rails-performance\/"]}]},{"@type":"ImageObject","inLanguage":"fi","@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":"fi"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fi","@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":"fi","@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\/fi\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/comments?post=3804"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3804\/revisions"}],"predecessor-version":[{"id":8428,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3804\/revisions\/8428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/media\/3805"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/media?parent=3804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/categories?post=3804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/tags?post=3804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}