Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

この記事はRuby Advent Calendar 2017 17日目の記事です。 benchmark_driver.gem とは Rubyの処理系を高速化していく上で重要な計測環境を改善するため、Ruby本体のリポジトリにあるbenchmark/driver.rbの後継として作られたベンチマークツールです。普通にRubyのスクリプトのパフォーマンスを比較するのにも使えます。 また、このgemはRuby Association開発助成金2017に採択されたプロジェクトとして開発されています。 何が便利なのか Procの起動を行なわない精度の良い計測ができる 皆さんがベンチマークによく使うのは、標準ライブラリの benchmark.rb か、見易い比較結果を得られる benchmark-ips.gem 等でしょう。 benchmark-ips.gem でよく使われるインターフェースや ben
はじめに JuanitoFatas/fast-rubyにRubyの役割の似たメソッドのパフォーマンスがまとまっていたが、結果だけでなくコードも並べて一覧化したかったので、当該リポジトリをcloneしてきて、以下のscriptを実行してまとめなおした。 File.open('./result.md', 'w') do |dest| $stdout = dest Dir.glob('code/**/*rb').each do |f| dest.puts "## #{File.basename(f, '.rb')}" dest.puts "\`\`\`rb" dest.puts File.open(f).read dest.puts "\`\`\`" dest.puts dest.puts "\`\`\`" require "./#{f}" dest.puts "\`\`\`" dest.put
注意: 指標にはなりますが場合によってはパフォーマンスが異なったり挙動が変わったりコードの可読性にも影響するのでちゃんとパフォーマンスを見ながら、テストしながら書きましょう。 参考 https://github.com/JuanitoFatas/fast-ruby https://speakerdeck.com/sferik/writing-fast-ruby メモ Arrayの数を数えるならArray#sizeもしくはArray#length(Enumerable#countを使うより速い) Arrayの検索にはArray#findもしくはArray#detect(Array#select.firstより速い) Arrayのランダム取得にはArray#sample(Array#shuffle.firstより速い) Arrayの最初の要素の取得はArray#[0](Array#firstよ
表示速度の高速化が趣味のzaruです。こんにちは。今回はRuby on Railsで作られた弊社Webサービスの表示速度を約5倍ほど速くしたので、何をしたのかをまとめました。Railsの高速化手法はいたるところで語られていますが、気にせず行きます。 前提や結果など アーキテクチャとしてはわりと一般的な AWS ELB -> nginx -> Unicorn / MongoDB という構成です。 |改善前|改善後 ---|---|--- Ruby|2.1|2.3 Rails|4.1|- MongoDB|2.6|3.2 Redis|2.4|3.2 Ruby・MongoDB・Redisのバージョンアップ、Railsもバージョンアップしたかったけど依存ライブラリの関係で据え置きになりました。 |改善前|改善後 ---|---|--- ページ読み込み速度|8.49sec|1.69sec 秒間リクエス
表題の通りですが、本記事では次の事項は扱いません。 gatling の使用方法 目的 テレビ露出時にかかる負荷をある程度予測しておくことで、それにかかる費用をできるだけ小さく留めること(最小化とは言いません)。 最小化しようとするとギリギリのラインを攻めるためにかなり厳密に見積もらないといけなくなりますが、そうすると人件費の方が高くつくので本末転倒です。 その計算をするのに僕のリソースをもって 1日かかるなら、1〜2万円多く AWS や GCP に献上した方が他の仕事も進められてみんな幸せです。 従って、本記事での検証は比較的ざっくりです。 構成 本試験は、以下の様な構成のアプリケーションを対象に行います。 AWS 特に特筆すべきことのない、標準的な構成です。 DNS とかはあまり関係ないので抜いています。 Amazon ELB Amazon EC2 Amazon RDS(MySQL、マス
計測エンジニアになろうとしたら苦労したという記事を技術ブログに書いたのですが、技術的な部分を備忘録も兼ねてまとめておきます。 Spring_MTさんのブログには大変お世話になりました。(というかREADME + このブログ記事のまとめでしかないような、、、汗) profilingとは プログラムが実行された際、どの部分のコードの実行にどれだけの時間がかかったのかを計測することです。 ではなぜ人はプロファイリングするのでしょうか? プロファイリングはパフォーマンスのボトルネックを発見し、”遅いプログラムを速くする”手助けになります。プログラムの中で無駄に何度も呼ばれている部分、不要なのに呼びだされている部分、不自然に遅い部分を発見すれば、それを効率化することでプログラムの実行を速くすることができます。 StackProfとは Rubyプログラムのプロファイリングに関してはいくつかのツールがあ
1. ベンチマーカー プロファイルすると、プロファイル自体に時間がかかるので正しく速度が測れない。そのためベンチマーカーも使うと良い。 ただし、ベンチマーカーはどこが遅いか等の解決の糸口は教えてくれない。 benchmark-ips 2. プロファイラ 実際に速度のボトルネックを見つける際に使う。 stackprof どのメソッドに多くの時間を費やしているかがわかる これを入れても速度にさほど影響がない rblineprof 行ごとにかかっている時間を出してくれる peek-rblineprofを使うとブラウザで結果が見れる ただしプロファイリングに結構時間がかかる (3. NewRelic) 実際、これらのことを手元でやらなくても、特にstackprof的なことや、どこのページやどのSQLクエリが特に遅いかなどは、 New Relic がやってくれます。お金を払うと結構詳細な部分も見れま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く