タグ

GCに関するrochefortのブックマーク (20)

  • Ruby の NODE を GC から卒業させた - クックパッド開発者ブログ

    こんにちは、技術部のフルタイム Ruby コミッタの遠藤(@mametter)です。メリークリスマス。 Ruby 2.5.0 がリリース予定です。いろいろな改善が含まれています。クックパッドからの主な貢献としては、「trace 命令の削除による高速化」や「分岐・メソッドカバレッジの測定のサポート」などがあります。 ユーザから見える改善はいろいろと記事が出てくると思うので、この記事では、「抽象構文木のメモリ管理のリファクタリング」というあまりユーザから見えない改善を紹介してみます。 概要 Ruby のパーサは、NODE という内部的なオブジェクトで構成された抽象構文木を生成します。2.4 までの NODE は GC に管理される普通のオブジェクトでしたが、2.5 からは GC の外で管理するようになりました。これにより、3 つ嬉しいことがあります。 大きなコードのパースが速くなりました

    Ruby の NODE を GC から卒業させた - クックパッド開発者ブログ
  • (翻訳) Ruby 2.2 のシンボル GC - FIVETEESIXONE

    Ruby 2.2 の新機能にシンボル GC というものがあります。 正直、「え、シンボルって GC されないから速いんじゃないの?なのにシンボル GC で Rails が速くなるとか話聞くけど、いったいどういうことなの?」という感じでサッパリ理解できてなかったのですが、その辺りの疑問に対してまとめられている記事がありました。 Symbol GC in Ruby 2.2 とても分かりやすく素晴らしい記事だと感じたので、許可をもらって以下に日語訳を公開します。 Symbol GC in Ruby 2.2 シンボル GC ってなに?それって気にしなくちゃいけないことなの? リリースされたばかりの Ruby 2.2 の大きな新機能として「インクリメンタル GC」が挙げられますが、もう1つの注目すべき新機能が、この「シンボル GC」 です。 もしあなたがこれまで Ruby の世界で過ごしてきたのな

    (翻訳) Ruby 2.2 のシンボル GC - FIVETEESIXONE
    rochefort
    rochefort 2016/05/26
    symbol gcについて
  • Composer を倍速にした、たった 1 行のコード

    まだ 12 月早々ですが、PHP ユーザに素敵なクリスマスプレゼントが届きました。 いまや使うのが当たり前となった Composer ですが、複雑な依存解決に実行時間がかかるのがネックでした。 これは日国内だけでなく、海外のユーザも同じで、皆がしょうがないと思いつつも、小さな不満を持ちながら使っていました。 そんな、ある�日、わずか 1 行のコードが追加されたことで、実行時間が、わずか半分になるという現象が起こりました。 Composer を倍速にするには? composer self-update を実行して、最新版にするだけです。 $ composer self-update 実際の効果 このコードの効果を見てみましょう。composer コマンドの --profile オプションを使って、実行時間と使用メモリ量を出力します。 $ composer update --dry-run

    rochefort
    rochefort 2014/12/06
    The World 時よ止まれ
  • RubyKaigi 2014 | Symbol GC

    I'll introduce Symbol GC for Ruby 2.2.0. I'll talk about these topics. Is Symbol of other programming languages collectable? How difficult do CRuby collect Symbol. How do I implement Symbol GC.

    RubyKaigi 2014 | Symbol GC
  • ruby-trunk-changes r47444 - r47452 - ruby trunk changes

    今日はインクリメンタルGC の導入がありました!! ko1: r47444 2014-09-08 13:11:00 +0900 インクリメンタルGC が導入されました! [ruby-core:64383] [Feature #10137] 今回 CRuby に導入されたインクリメンタルGC は、既に導入されている世代別GC (RGenGC) の major GC の make & sweep の mark 処理を複数回に分割して実行することで、major GC の停止時間を分散させるようにする機能のことです。オーバヘッドがあるのでスループット(全体の処理時間)は少しのびる可能性がありますが、応答性は良くなる(グッ、と固まる時間が短くなる)ことが期待されます。 mark を断続的に実施するので、markの途中で Ruby のコードが動くことがあるため、既に mark 済みのオブジェクトにまだ

    ruby-trunk-changes r47444 - r47452 - ruby trunk changes
    rochefort
    rochefort 2014/09/09
    RIncGC // fizzbuzzわからん
  • Ruby 2.1.1 GC Tuning - Qiita

    Help us understand the problem. What is going on with this article? Ruby2.1では、RGenGCによりかなりパフォーマンスが改善されている。 また、チューニングパラメータが増えているが、まとまった日語の解説が無かったので書いてみた。 間違いがある可能性があるので、指摘は歓迎です。 RGenGCとは RGenGC(Restricted Generational Garbage Collection)については、まずはこれを読むべし www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf www.atdot.net/~ko1/activities/2014_rubyconf_ph_pub.pdf Ruby 2.1: RGenGC · computer talk by

    Ruby 2.1.1 GC Tuning - Qiita
  • Ruby 2.1: RGenGC · computer talk by @tmm1

    30 Dec 2013 Ruby 2.1 adds a "restricted" generational collector, with minor mark phases that dramatically reduce the cost of GC. Let's take a look at the evolution of Ruby's GC. Ruby 1.8: simple mark and sweep Classic mark and sweep implementation. The entire world is stopped during both phases. Traverse object graph from roots and mark live objects, using a bit inside the object structure (FL_MAR

    Ruby 2.1: RGenGC · computer talk by @tmm1
  • Ruby 2.1がガベージコレクションを変更,大規模システムでの批判に対処

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Ruby 2.1がガベージコレクションを変更,大規模システムでの批判に対処
    rochefort
    rochefort 2013/09/25
    bitma markingでcopy on write friendlyになったけど、まだ遅いのか。2.1の世代別GCはよくわからんが期待。
  • CRubyでオブジェクトが生成された位置を突き止める - GC Advent Calendar - I am Cruby!

    Garbage Collection Advent Calendarの1日目の記事です。 おそらく一人でけっこう長い日数を書くと思うので、軽いものからボチボチと…。 しかもGCとはあまり関係ないですが…。 とあるオブジェクトの生成位置を調べたいとき、どうするのか。 object_idを1bit左シフトするとだいたいそのオブジェクトのRVALUEのアドレスになるので p (hoge.object_id 1).to_s(16) # => fa83a4 上記のようにobject_idを出力するコードを混ぜておきましょう。 その後にgdbrubyを動かしてみます。 この時、GC_DEBUG付きでビルドしたrubyなら実はソースコードとラインがわかります。 デバッグ用にGC_DEBUG付きのrubyがビルドできるようならそうしてみましょう。 rvmだったら.rvmrcに以下の設定するとできるんじゃ

  • https://rubysource.com/narihiro-nakamura-rubys-gc-innovator/

    rochefort
    rochefort 2012/08/11
    GCはとっつきにくいけど、こういうインタビュー記事だと分かりやすくていいな。
  • 例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)

    最近クックパッドでは、アプリケーションサーバの大半が Rails 2.3 から Rails 3 に置き換わったのですが*1、リリース前のベンチマークの時点ではあまりパフォーマンスが出ず四苦八苦していました。具体的には Rails 2.3 の時と比べ MRI 1.8.7 だとレスポンスタムが200%ぐらい遅い結果でした。Rails 3 になって実装が Merb core を取り入れ疎結合で綺麗になった反面、より多くのオブジェクトと・メモリを利用する様になった影響かと思います。 そこで Ruby インタプリタの変更*2を行い検証をしたところ MRI 1.8.7 (Rails 2.3と比べ) 約200%遅い MRI 1.8.7 -> Ruby Enterprise Edition 1.8.7 2011.03 (tcmalloc 無効) 約180%低速 MRI 1.8.7 -> Ruby Ente

    例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)
    rochefort
    rochefort 2011/10/06
    ユーザのレスポンス処理中は GC を止め、その外で実行するだけで大きくパフォーマンスが改善しました。
  • Ruby 1.9.3 Preview 1がリリース。Lazy Sweep GCにより、GCの停止時間が改善。

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Ruby 1.9.3 Preview 1がリリース。Lazy Sweep GCにより、GCの停止時間が改善。
  • Adventures in Scaling, Part 1: Using REE | Miso Engineering

    The engineering team at Miso has been quite busy the last few weeks hacking on new features for the site, as well as on experimental ideas regarding the ‘future of social TV’. We are also busy fleshing out the Developer Platform that allows others to build applications using our API and to embed widgets displaying a user’s latest watching activity. [Post on building a OAuth REST API is forthcoming

  • Rubyでガベレージコレクションの設定をチューニングしてみた - さかなチキンぱん。

    ブログを移した為記事を削除しました。 新しいページへどうぞ

    Rubyでガベレージコレクションの設定をチューニングしてみた - さかなチキンぱん。
  • GC本をGCしないための100の方法

    1. GCをGCしないた めの100の方法 100 tips to don't gc the gcbook nari/中村 成洋 ネットワーク応用通信研究所 GCをGCしないための100の方法 - 100 tips to don't gc the gcbook Powered by Rabbit 0.6.4 3. 自己紹介 ✓ nari/中村 成洋です ✓ 福岡生まれ、島根在住 ✓ NaCl勤務 2/195 GCをGCしないための100の方法 - 100 tips to don't gc the gcbook Powered by Rabbit 0.6.4 4. 自己紹介 ✓ GC歴 3.5年(駆け出し) ✓ ククク…やつはGC界の中で最弱 ✓ アイス工場歴 3年 ✓ 大体一緒くらい 3/195 GCをGCしないための100の方法 - 100 tips to don't gc th

    GC本をGCしないための100の方法
    rochefort
    rochefort 2010/07/01
  • GC本の説明Ust - I am Cruby!

    GC全国各地で色々と勉強会を開催して貰えるようです(T-T)これは僕も何かせねば! ということで、一章ずつ内容を説明するustでもやろうかと思います。 とりあえず、僕の手元にまだがないので(!!)。が届いたら、平日の夜9時頃からやろうかなーと思っています。第一回は来週の水曜(3/24)あたりを想像しています。どれだけ需要があるものかわかりませんが…。興味のある人は覗いてください。詳しい情報はtwitter(@nari3)で流すと思います。 ガベージコレクションのアルゴリズムと実装作者: 中村成洋,相川光,竹内郁雄出版社/メーカー: 秀和システム発売日: 2010/03/18メディア: 単行クリック: 494回この商品を含むブログ (10件) を見る

    rochefort
    rochefort 2010/03/17
    期待age
  • 「ガベージコレクションのアルゴリズムと実装」という本を書きました。

    gcbook, gcai, GCGCLoverのみなさん、お待たせしました。「ガベージコレクションのアルゴリズムと実装」の情報公開です。 書名:ガベージコレクションのアルゴリズムと実装 著者:中村 成洋/相川 光 監修:竹内 郁雄 ページ数:472ページ 体価格:3,200円 発売開始日:2010年3月17日(水) ※地域・書店によって遅れることがあります ISBN:978-4-7980-2562-9 C3055 読み所 書は次の2つのテーマを扱います。 1.GCのアルゴリズム(アルゴリズム編) 2.GCの実装(実装編) アルゴリズム編では、これまでに考案されてきた数多くのGCアルゴリズムの中 から、重要なものを厳選して紹介します。伝統的かつ基的なものから、やや 高度なアルゴリズムを選定しています。GC独特の考え方や各アルゴリズムの特 性などを理解していただくのがアルゴリズム編の最大

    rochefort
    rochefort 2010/03/04
    GCでモテモテ
  • RMagickのメモリーリーク対策。

    2012年05月(1) 2012年02月(3) 2012年01月(1) 2011年06月(2) 2011年05月(1) 2010年11月(1) 2010年08月(1) 2010年07月(1) 2010年06月(2) 2010年05月(2) 2010年01月(2) 2008年10月(3) 2008年09月(7) 2008年08月(4) 2008年07月(11) 2008年06月(1) 2008年04月(8) 2008年03月(17) SQlite3にCSVデータをインポートする際にハマった。 by cm3 (01/24) SQLiteを管理するGUIツール by matuzaki (10/23) SQlite3にCSVデータをインポートする際にハマった。 by jacob (10/22) google calendarとiPhone、Thunderbirdを連携させる。 by 何某。 (08

    RMagickのメモリーリーク対策。
    rochefort
    rochefort 2010/02/03
    def run_gc fDisabled = GC.enable GC.start GC.disable if fDisabled end
  • るびま

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

  • [実装編]メモリー管理を処理系任せにしてはいけない

    Javaや.NETを使うと,メモリー管理を意識しなくてもプログラミングできる。例えばJavaの場合は,Java VM(Virtual Machine)が備える「ガベージ・コレクタ」と呼ぶメモリー管理機能が,未使用のオブジェクトを破棄してメモリーを解放するといった処理を自動的に実行する(図1)。 図1●JavaVMによるメモリー管理の仕組み ヒープ領域は,生存期間の短いオブジェクトを格納する「New領域」と生存期間の長いオブジェクトを格納する「Old領域」で構成される。New領域はさらに,最初にオブジェクトを格納する領域「Eden」と,しばらく生存しているオブジェクトを格納する「世代0」「世代1」から成る。Edenに存在するオブジェクトは,生存期間が延びるにつれて,世代0または世代1に移動。世代0と世代1を何度か移動した後,最終的にOld領域に移される [画像のクリックで拡大表示] だが,処

    [実装編]メモリー管理を処理系任せにしてはいけない
    rochefort
    rochefort 2008/12/16
    分かりやすい絵。
  • 1