サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
www.atdot.net/~ko1
Gradual Write-Barrier Insertion into a Ruby Interpreter Koichi Sasada Cookpad Inc. Japan ko1@cookpad.com Abstract Ruby is a popular object-oriented programming language, and the performance of the Ruby garbage collector (GC) di- rectly affects the execution time of Ruby programs. Ruby 2.0 and earlier versions employed an inefficient non-generational conservative mark-and-sweep GC. To improve this
ご連絡:本日 25 日まで続けられた Ruby VM アドベントカレンダーは,世界の終了のため,保存していなかった部分が消えてしまいました.今後,随時復活させていきたいと思います.ご迷惑をおかけ致します. ご連絡:世界の終了によって失われた記憶を随時復旧させていますが,いくつかの記憶のかけらが宇宙的な何かのために欠落してしまっているようです.鋭意,そうさくしていきたいと思っております. 一覧: #1 RubyVM::InstructionSequence の拡張 #2 Kernel#caller_locations の紹介 #3 Kernel#caller_locations の性能 #4 vm_backtrace.c #5 メソッドディスパッチの高速化(RubyConf 2012 の紹介) #6 Thread.async_interrupt_timing の紹介 #7 Thread.as
博士論文本審査発表資料 高速なRUBY用仮想マシンの開発 EFFICIENT IMPLEMENTATION OF RUBY VIRTUAL MACHINE 東京大学大学院 情報理工学系研究科 特任助教 笹田耕一 1 Agenda 背景と目的 高速なRuby用仮想マシン Rubyの並列化 まとめ 2 背景 3 スクリプト言語の必要性の増大 � スクリプト言語の重要性増大 � 計算機の性能向上,スクリプト言語の機能向上 � 利用シーンの増加 � GUIプログラミング,ネットワークアプリケーション � ウェブアプリケーション � システムプログラミング言語 v.s. スクリプト言語 � John K. Ousterhout, Scripting: Higher-Level Programming for the 21st Century, Computer, IEEE, 1998 より � 型付
Parallel programming in Ruby3 with Guild Koichi Sasada Cookpad Inc. <ko1@cookpad.com> Today’s talk •Ruby 2.6 updates of mine •Introduction of Guild •Design •Discussion •Implementation •Preliminary demonstration Koichi Sasada http://atdot.net/~ko1/ • is a programmer • 2006-2012 Faculty • 2012-2017 Heroku, Inc. • 2017- Cookpad Inc. • Job: MRI development • Core parts • VM, Threads, GC, etc Koichi Sa
Guild Prototype Koichi Sasada Cookpad Inc. <ko1@cookpad.com> RubyKaigi 2016 talk RubyKaigi 2016 talk TL;DR •We can run parallel programs with Guilds •Current implementation is too preliminary and so buggy (easy to halt) → “Thread programming” is too hard for human beings. Today’s talk •Background of Guild •Demonstrations •Guild specifications (ideas) •Guild implementations (w/ future plan) •Synchr
Progress report of "Ruby 3 Concurrency" Cookpad Inc. Koichi Sasada <ko1@cookpad.com> Ruby X Elixir Conf Taiwan 2018 (2018/04/28) Today’s topic • Difficulty of Thread programming • New concurrent abstraction for Ruby 3 named Guild – To overcome threading difficulties • Introduce current Guild development progress – Current “Semantics” – Current API design and sample code we can run – Preliminary pe
RubyKaigi 参加にっき。 9/16 広島着。親族にご挨拶。 9/17 台風の日。朝に原爆ドームだけ見る。あとは宿で缶詰。前夜祭。 9/18 1日目。 発表した。 Ruby25 の件の調整1 official party だったけど、人多過ぎでほぼ食べられず。升酒だけもらった。 9/19 2日目。 ITOC さんとの件調整 型について議論 vlad と今後について議論 9/20 3日目 鳥井さんの発表の手伝い Ruby25 の件の調整2 ITOC の件の調整2 Ruby25 の件の調整3 ジョナンのインタビュー after party by pixiv 楽しかった。というのも、雰囲気が良かったのもあるけど、全然ほかのパーティーにいけなかったからだ。 会期中、コミッタから交通費の領収書を回収 9/21 帰り。広島城のお堀のあたりまで散歩した RubyKaigi では、娘を託児所にほぼフ
← 「実行」すると,ここに絵が出ます. ← 右クリックで「名前をつけて画像を保存」とかすると,生成した画像が保存できます.多分. 実行! サンプル集 プログラムをコピー&ペーストして,どんな図形が表示されるか調べてみよう. 例1:四角 background(0, 0, 0); for(i = 0; i < 25; i = i + 1) { for (j = 0; j < 25; j = j + 1) { // 二重ループ fill(random(255), random(255), random(255)); // 色をランダムに rect(i*10, j*10, 10, 10); } } 例2:円 background(0, 0, 0); // 背景色を黒に for(i = 0; i < 25; i = i + 1) { fill(random(255), random(255), ra
Ruby 2.4 Internals Koichi Sasada ko1@cookpad.com Note: Ruby 2.4.0 has several bugs. Note2: No x.y.0 doesn’t have several bugs. Ruby 2.4.0 New features written in a release announcement • Introduce hash table improvement (by Vladimir Makarov) • Binding#irb: Start a REPL session similar to binding.pry • Unify Fixnum and Bignum into Integer • String supports Unicode case mappings • Performance improv
A proposal of new concurrency model for Ruby 3 Koichi Sasada ko1@heroku.com People love “Concurrency” Concurrent RubyKaigi (at least, there are two parallel sessions) Why people love (to discuss) “Concurrency”? •Performance by “Parallel” execution to utilize multiple-cores •Ruby has thread system, but MRI doesn’t permit to allow parallel execution. About this presentation •Show “Why difficult mult
IIJ mio の音声 SIM が届いたので、iPhone SE のセットアップ。 13時ごろ、MNP の手続きを追えたんだけど、22時現在、まだ手続きが終了していないっぽい...。 と思って softbank 携帯で電話したら、つながらなかった(圏外になった)ので、おわったっぽいが、なぜ IIJ mio のほうは圏外のままなのか。 IIJ mio のサイトからプロファイルをダウンロードして、無署名の警告をものともせずにインストールし、再起動したら docomo 回線を拾ってくれた。 Pony で Actor の GC がどうのってのがあって、ぴんとこなかったんだけど、やっとわかった。 Elixir(多分 Erlang も)の場合、こんな感じで、誰からも参照されない Process を沢山作って、永遠に待つような例が書ける。誰も参照していないので、その Process にメッセージが届くこ
Precompiling Ruby scripts Myth & Fact Koichi Sasada ko1@heroku.com Questions Have you ever thought Ruby is slow? Quick answer •Try latest MRI contains optimized VM •Ruby 1.9 and later implement VMs •Ruby 2.3 (Dec/2015) also includes many improvements •VMs are written by Koichi Sasada Questions Have you ever thought Ruby’s GC is slow? Quick answer •Try Ruby 2.1 and later •Generational and increment
今年行った場所。 1月 ベルギー・ブリュッセル(FOSDEMで発表) 2月 オランダ・アムステルダム(Amsterdam.rb に参加、パネル。FOSDEM のついで) 3月 フィリピン・ボラカイ(Rubyconf.phで発表) 4月 アメリカ・アトランタ(RailsConfで発表) 6月 日本・栃木(栃木Ruby会議で朗読) 7月 日本・大阪(関西Ruby会議で発表) 9月 ポルトガル・ポルト(RubyConf.ptで発表) ロシア・モスクワ(RailsClubで発表) 10月 オーストリア・ザルツブルグ(EURUKO2015で発表) 11月 日本・東京(IPSJ PROで発表) 日本・東京(OedoRubyKaigi05で運営) 12月 日本・東京(RubyKaigi2015で発表) 日本以外は7カ国。そのほか、福岡に何度か。 そういえば、一度も松江に行っていない。 日本のいろんな都市
Compiling Ruby scripts Koichi Sasada ko1@heroku.com Today’s talk • Making ruby script serializer and deserializer • Well known technique and tools such as JVM class file • No special technique is needed. Just implemented it. • Introduction of how to use • Evaluation result Koichi Sasada A programmer living in Japan Koichi is a Programmer •MRI committer since 2007/01 • Original YARV developer since
答え合わせ。 おっと、実時間だと、世代別 GC を、ちゃんと有効にしているやつと、あまり変わりませんね。 とありますが、system time が長いですよね。これ、システムからメモリを確保するために必要となる時間です、多分。800MB 以上ぶんどらないといけないですから。この場合、user 時間を比べて、GC の影響を見ておくのが良いでしょう。つまり、GC の影響は 1.64 sec - 1.47 = 0.17 sec。これが、GC による影響だとみることが出来ます。 まとめると、大ざっぱに オブジェクトの生成 0.7 sec GC 時間 0.2 sec という感じです。潰すべきオーバヘッドはどちらか、というのは、わかりやすい。GC は本当に遅いんですかね。 あと、オブジェクトを 100M 個作っておいた、すぐあとのベンチマークでは、また違った様子ですね。これも、OS とのやりとりやら、
pwd が何の略か? ということを聞かれた。確かに答えられない。 http://www.abbreviations.com/pwd の中で working directory を含むものをピックアップすると、 Print Working Directory Present Working Directory Path of Working Directory の3説が見つかる。 man を見ても、あんまりしっくりこない。なんで cwd (current working directory)にしなかったんだろう? system call は getcwd(2) なのに。 昨日の続き。 早速中田さんが r49614 を入れてくれて、こういう a, b = x, y の時には、 push x # stack: x push y # stack: x y newarray 2 # stack: [
Incremental GC for Ruby interpreter Koichi Sasada ko1@heroku.net K.Sasada: Incremental GC for Ruby interpreter, RubyConf2014 1 2014 Very important year for me K.Sasada: Incremental GC for Ruby interpreter, RubyConf2014 2 10th Anniversary K.Sasada: Incremental GC for Ruby interpreter, RubyConf2014 3 10th Anniversary YARV development (2004/01-) First presentation at RubyConf 2004 K.Sasada: Increment
最近の Ruby のメモリ管理 Recent Ruby’s memory management Koichi Sasada ko1@heroku.com K.Sasada: 最近の Ruby のメモリ管理, 2014 Summary •Ruby’s new two GC implementation • RGenGC: Restricted Generational GC • RincGC: Restricted incremental GC K.Sasada: 最近の Ruby のメモリ管理, 2014 Who am I ? Koichi Sasada from Heroku, Inc. •CRuby/MRI committer • Virtual machine (YARV) from Ruby 1.9 • YARV development since 2004/1/1 • Recen
Memory management tuning in Ruby Koichi Sasada <ko1@heroku.com> Memory management tuning in Ruby, RubyConfPH 2014 by K.Sasada <ko1@heroku.com> 1 Summary of this talk • Introduction of new versions • Ruby 2.1 (2.1.1 was released) • Ruby 2.2 (currently working on) • Basic of Ruby’s memory management (GC) • GC tuning parameters • “What” and “How” we can tune by GC parameters Memory management tuning
Advent calendar の途中ですが、昨日デバッグするためにやったこと。Ruby 2.0 から使えるテクニックです(同じようなことは、もっと前から入っている set_trace_func を使っても出来ました)。 tracer というライブラリがあり、実行過程を dump することが出来ますが、TracePoint を使うことで簡単に似たようなことをやることが出来ます。 n = 0 trace = TracePoint.new(:a_call, :a_return, :raise){|tp| case tp.event.to_s # 手抜き when /call/ puts ' ' * n + tp.inspect n+=1 when /return/ n-=1 puts ' ' * n + tp.inspect when /raise/ puts ' ' * n + '!!!'
Home page of Koichi Sasada This page is the home page of Koichi Sasada (笹田耕一 in Japanese). Bio Koichi Sasada is a programmer, mainly developing Ruby interpreter (CRuby/MRI). He received Ph.D (Information Science and Technology) from the University of Tokyo, 2007. He became a faculty of University of Tokyo (Assistant associate 2006-2008, Assistant professor 2008-2012). After the 13 years life in un
Object management on Ruby 2.1 Koichi Sasada Heroku, Inc. ko1@heroku.com 1 Object management on Ruby 2.1 by Koichi Sasada at RubyConf2013 Summary of this talk • Ruby 2.1.0 will be released soon! • 2013/12/25 • Some new features and internal performance improvements • Rewrite object management to improve performance • “gc.c” → 3414 insertions, 1121 deletions • Allocation/Deletion trace mechanism • I
私は Heroku Matz team で日々、Ruby の開発を行っています。今日は、Matz team でどんな激論が交わされているか、ご紹介します。 K: 今は、 Object#freeze 以外、frozen object をを返すメソッドって無いから K: これが今後変わっていくのかなあぁ n: 暗黙でfreezeはないね、たぶん k: 基本無料、と同じノリで k: 基本 freeze って時代が来るのかしらん k: 基本 freeze にして今度実験してみよう n: 課金するとmutable n: gsub!はマッチが多いと高い k: xxx! 系が全滅か n: !メソッドが多い = 富豪プログラミング k: お金持ちじゃないとプログラミングできない Ruby の富豪プログラミング化を阻止したい人は ruby 開発にご参加下さい。
Ruby 2.1 のすべて Koichi Sasada Heroku, Inc. ko1@heroku.com tochigirubykaigi05 2013/09/21 1 About this presentation • In this presentation, I will show you about Ruby 2.1 which I know. tochigirubykaigi05 2013/09/21 2 Ruby 2.1 release plan announcement “I, Naruse, take over the release manager of Ruby 2.1.0 from mame. Ruby 2.1.0 is planed to release in 2013-12- 25. I‘m planning to call for feature prop
Toward “more” efficient Ruby 2.1 Koichi Sasada <ko1@heroku.com> Heroku, Inc. Euruko 2013 Toward more efficient Ruby 2.1 by Koichi Sasada 1 Agenda •Ruby’s rough history •Ruby 2.1 new “internal” features • Internal object management hooks • Object allocation tracing • GC hooks • RGenGC: Restricted Generational Garbage Collection ← Today’s main topic •Ruby 2.1 expected “internal” features • Parallel
Ruby の GC の問題点と 改善手法についての一考察 A study on issues and improvements on Ruby’s Garbage Collection Koichi Sasada Heroku, Inc. ko1@heroku.com 1 自己紹介 所属 Asakusa.rb(初期から) Ruby Association(理事) 日本 Ruby の会(一般会員) Heroku, Inc.(MTS) Ruby(CRuby/MRI)コミッタ • 趣味で Ruby を書いています • 仮想マシンなどの基盤部分の担当 • コミット数は少ない 2 Ruby 2.0.0 Release!! Ruby 2.0.0 was released!! 2013/02/24 (20th anniversary of Ruby lang.) Ru
次のページ
このページを最初にブックマークしてみませんか?
『Homepage of Koichi Sasada』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く