IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Ruby on Rails 海外事情コラム

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第47回 どれだけRailsが好きなんだろう (野田貴子) 2019年9月

こんにちはー。野田貴子です。 海外のコラムで面白いものがあったので、意訳してお届けします。 ご参考ください。

###

こんにちは。Ruby on Railsに関するブログ記事を読むと、「ああ、Railsが好きなんだな~」とよく感じます。Railsのメリットだけでなくデメリットを上げている記事ですら熱意や愛がありますよね。ほかの言語やフレームワークのブログ記事にはない傾向ではないでしょうか。

さて、今回ご紹介するのは、Rails Ruby Benchでパフォーマンスの測定をしている方が、実際にどこの処理で時間がかかっているのかを調査した記事です。

Where Does Rails Spend Its Time?
http://engineering.appfolio.com/appfolio-engineering/2019/6/4/where-does-rails-spend-its-time

以下の計測にはRuby 2.6を使っており、これは2019年現在の安定バージョンです。

また、プロファイリング方法には主に2つのタイプがありますが、今回の調査では後者を使用しているとのことです。


  • Instrumenting: 計測するものが何であれ、その開始点と終了点を追跡するためのコードをプログラムに挿入します。すべての処理を追うことができますが、挿入したコードの分だけ正確性にずれが生じます。たいていはオーバーヘッドが大きくなるため、本番環境では利用しないようにします。
  • Sampling: 何ミリ秒ごとに、コードのどの時点まで処理が進んでいるのかのサンプルを取ります。統計的に正確で、オーバーヘッドはかなり低くなることがありますが、全部の処理を追えるわけではありません。カバレッジデータには使用しないでください。処理が速い場合は本番環境でも実行できます。

実際の計測データはリンク先を見ていただくとして、結論を引用します。


<結論>

  • 設定が適切であっても、Rails CRUDアプリはDBの問い合わせや、ActiveRecordのオーバーヘッド、そしてシリアル化にはかなりの時間を費やします。
  • ガベージコレクションはRuby 1.9よりもはるかに優れていますが、それでもやはりかなりの時間がかかります。できる限りガベージオブジェクトを少なくするようにしましょう。
  • ActiveRecordはDB自体の上にかなりのオーバーヘッドを追加します。Sequelのような代替案が使えないかどうか検討してみましょう。

足るを知り、上手に活用していきたいですね。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes