Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

Performanceに関するYassLabのブックマーク (12)

  • Optimizing Ruby’s JSON, Part 4

    In the previous post, we established that as long as ruby/json wasn’t competitive on micro-benchmarks, public perception wouldn’t change. Since what made ruby/json appear so bad on micro-benchmarks was its setup cost, we had to find ways to reduce it further. Spot the Seven Differences So I decided to file this performance discrepancy as a bug, and investigate it as such and started profiling Step

    YassLab
    YassLab 2025/01/01
    "with all the above optimizations, we were now faster than Oj when reusing the JSON::State object, but still quite a bit slower when allocating it on every call ... So there was no way around it, I had to find how to automatically re-use that JSON::State object. Or how to not allocate it at all?"
  • Optimizing Ruby’s JSON, Part 3

    In the previous post, I covered how I reimplemented JSON::Generator::State#configure in Ruby and some other changes. Unfortunately, it didn’t go as well as I initially thought. Mistakes Were Made The default gems that ship with Ruby are automatically copied inside ruby/ruby’s repo. In short, there’s a bot aptly named matzbot, that replicates all the commits from the various ruby/* gems, inside rub

    YassLab
    YassLab 2025/01/01
    “In the next post, we’ll dive into how the setup cost was optimized further, and then at some point, we’ll have to start talking about optimizing the parser.”
  • Optimizing Ruby’s JSON, Part 2

    In the previous post, I covered my motivations for improving ruby/json’s performance, and detailed the first 4 notable optimizations applied to speed up JSON generation. If I was to cover every single optimization applied, at this rate I’d end up with a dozen parts, so I’ll try to only focus on the one that made a significant difference or used an interesting pattern. Reducing Setup Cost - Argumen

    YassLab
    YassLab 2025/01/01
    “At this rate, and based only on the number of commits I haven’t yet covered, I may need 5 or 6 more parts, but I hope I won’t have to disgress as much as the series progress, and not all commits may be worth talking about. Edit: Part three is here.”
  • Optimizing Ruby’s JSON, Part 1

    I was recently made maintainer of the json gem, and aside from fixing some old bugs, I focused quite a bit on its performance, so that it is now the fastest JSON parser and generator for Ruby on most benchmarks. Contrary to what one might think, there wasn’t any black magic or deep knowledge involved. Most of the performance patches I applied were fairly simple optimizations driven by profiling. A

    YassLab
    YassLab 2025/01/01
    “I have way more optimizations than these ones to talk about, but I feel like it’s already a pretty packed blog post. So I’ll stop here and work on some followup soon, hopefully I won’t lose my motivation to write :). / Edit: Looks like I didn’t, part two is here.”
  • RubyKaigi2024に参加してきました⛱️

    2024年5月15〜17の3日間、沖縄県那覇市で開催されたRubyKaigi2024に参加してきました! 今年も楽しかったですね・・・! だいぶ間が空いてしまいましたが、聴講したトークや思ったことなど書いてみました。 トーク感想 Day1 The grand strategy of Ruby Parser by Yuichiro Kaneko 発表資料 Ruby3.3で導入されたパーサージェネレータであるLramaについて、どんなものなのか、それがなぜ選ばれたのか、そして現在のRubyのパーサ周りの開発がどのような状況かといった内容でした。 まずここでいうパーサとは、Rubyのコードを解釈してASTとして出力するためのものです。 出力されたASTは、主にLSPのような開発支援の外部ツール等で使われます。 Ruby3.3では、それまでのBisonに代わってLramaというRubyで書かれた新

    RubyKaigi2024に参加してきました⛱️
    YassLab
    YassLab 2024/06/04
    "2024年5月15〜17の3日間、沖縄県那覇市で開催されたRubyKaigi2024に参加してきました!今年も楽しかったですね・・・!だいぶ間が空いてしまいましたが、聴講したトークや思ったことなど書いてみました。"
  • ruby/doc/yjit/yjit.md at master · ruby/ruby

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    ruby/doc/yjit/yjit.md at master · ruby/ruby
    YassLab
    YassLab 2024/05/29
    "YJIT is a lightweight, minimalistic Ruby JIT built inside CRuby. It lazily compiles code using a Basic Block Versioning (BBV) architecture. YJIT is currently supported for macOS, Linux and BSD on x86-64 and arm64/aarch64 CPUs. This project is open source and falls under the same license as CRuby."
  • Rubyは思ったより速いかもしれないとの指摘 | ソフトアンテナ

    国産プログラミング言語「Ruby」は、インタプリタ型のプログラミング言語であるため、「処理速度が遅そう」というイメージを持つ開発者の方もいるかもしれません。 しかし今回、Rubyで書かれたプログラムも工夫次第で十分高速に操作することを、John Hawthorn氏はブログ記事「Ruby might be faster than you think」で指摘し、Hacker NewsやRedditで注目を集めています。 同氏が例として掲載しているのは、crystalrubyと呼ばれる、Rubyの中からCrystalを呼び出すためのgemのサンプルプログラムです。 CrystalはRubyに似た構文を採用した静的型付けプログラミング言語です。 フィボナッチ数を計算するプログラムで、Pure Ruby版のfib_rbとCrystalのコードを呼び出すfib_crの実行速度を比較しています。 req

    Rubyは思ったより速いかもしれないとの指摘 | ソフトアンテナ
    YassLab
    YassLab 2024/05/22
    “Rubyで書かれたプログラムも工夫次第で十分高速に / John Hawthorn氏はブログ記事「Ruby might be faster than you think」で指摘し、Hacker NewsやRedditで注目 / ブロックが配列を生成することに着目し、これを抑制することで速度を改善”
  • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

    こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカいマイクロサービス第一位である api

    スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
    YassLab
    YassLab 2024/04/02
    "松本で行われたRubyKaigi 2023に参加した際にはAfter Partyでbyroot氏とも対面で会話し、多分そのワークロードだとうまく動くと思う、みたいな会話 / 先は長そうだ……と思いつつpitchforkにissueを立ててみると、なんと40分で解決"
  • Ruby のメモリ使用量問題を調査し upstream で解決していただいた話 - ANDPAD Tech Blog

    はじめに こんにちは。リアーキテクティングチームの髙橋と申します。 この記事では、アンドパッドの施工管理サービスで利用している Ruby をバージョンアップしたときに発生したメモリ使用量の問題の発生から解決までをお話しします。 Ruby のバージョンアップ(3.0 -> 3.2) アンドパッドでは昨年 2023 に、施工管理サービスで利用している Ruby を 3.0 から 3.2 にバージョンアップしました。 バージョンアップ自体は過去に確立済みの手法(詳しくは過去記事をご参照ください)により、粛々と進められリリースされました。 ところがこのリリースから数日後、とある問題が発覚しました。 メモリ増大問題 アプリケーションのリソース使用状況を監視している SRE チームのメンバーから、以下のような連絡がありました。 Ruby バージョンアップのリリース以降、アプリケーションの利用するメモリ

    Ruby のメモリ使用量問題を調査し upstream で解決していただいた話 - ANDPAD Tech Blog
    YassLab
    YassLab 2024/02/16
    "社内で事象を共有したところこの問題はRuby本体に報告するべきという話に / コミッタの柴田さんから代わりにBug #19969として報告 / 修正コミットがRubyのmasterブランチに入り、バックポートもRuby 3.1, 3.2それぞれに入りました"
  • Ruby 3.3でYJITを今すぐ有効にすべき理由 - k0kubun's blog

    Ruby 3.3がリリースされた。YJITには非常に多くの改善が含まれたリリースだったが、 NEWS解説記事やリリースパーティーでは 2点しか触れられなかったので、この記事ではRuby 3.3でYJITがどう改善されたかについて解説する。 YJITは既に実用段階 YJITRuby 3.1で導入されたが、Ruby 3.2の時点でexperimentalのマークが外れ、実用段階となった。 Ruby 3.2では、以下のような企業で性能改善が報告された。 DeNA: 40% 高速化 GMOペバボ: 18% 高速化 STORES: 6.5-7.5% 高速化 Timee: 10% 高速化 メドピア: 2.8% 高速化 BOOK☆WALKER: 20-30% 高速化 Discourse: 15.8-19.6% 高速化 Lobsters: 26% 高速化 CompanyCam: 20-40% 高速化 弊

    Ruby 3.3でYJITを今すぐ有効にすべき理由 - k0kubun's blog
    YassLab
    YassLab 2023/12/27
    "Ruby 3.2では以下のような企業で性能改善が報告された。DeNA: 40% / GMOペバボ: 18% / Timee: 10% / STORES: 6.5-7.5% / メドピア: 2.8% / Discourse: 15.8-19.6% / Lobsters: 26% / CompanyCam: 20-40% / Ruby 3.3.0は比較的安定したリリースになっているはず"
  • GitHub - benchmark-driver/benchmark-driver: Fully-featured benchmark driver for Ruby 3x3

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - benchmark-driver/benchmark-driver: Fully-featured benchmark driver for Ruby 3x3
    YassLab
    YassLab 2022/12/07
    “Fully-featured benchmark driver for Ruby 3x3 / Ruby interface similar to stdlib benchmark.rb, benchmark-ips / YAML input to easily manage structured benchmark set / Comparing multiple Ruby binaries, even with miniruby”
  • フレームグラフを読むのは簡単ではありません

    Speedshopによる『Ruby Performance Newsletter(日語版)』をお届けします。 翻訳:島田 浩二 フレームグラフを読むのは簡単ではありません。 練習が必要です。ですが、ちょっとしたコツもあります。ここではそれを紹介します。 フレームグラフやウォーターフォールチャートを呼ばれる種類の可視化を見ないで1日を過ごすことは、ほとんどありません。大抵はSpeedscopeやChrome DevToolsで、そういった可視化を目にしています。 著書の多くやワークショップの中でフレームグラフの読み方を教えていると、そこでつまづく人を見かけます。フレームグラフを読んで理解するのは、ある程度はスキルの話です。スキルを身につけるには、絶え間ない練習が必要です。 ただ、フレームグラフを読むスキルはサブスキルに分解できます。その場合に最も重要だと私が考えるのは、「どのフレームが重要

    YassLab
    YassLab 2022/11/16
    “フレームグラフはパフォーマンス向上のための重要なツールです / 試し続け、見続けていけば、最終的には効果的に使用するのに必要な「パターン認識」を学べるはずです”
  • 1