タグ

2022年12月26日のブックマーク (5件)

  • JITコンパイルをサポートした新たなRuby処理系をRustとアセンブリで書いている話 - Qiita

    CRuby(3.2.0-preview3)およびCRubyの新しいJITコンパイラ・モジュールであるYJITを有効にした場合と、monoruby(JITあり・なし)の単位時間当たりの実行回数をbenchmark-driver.gem を用いて比較しています。数字が大きい方が速いです。ベンチマークの種類によりますが、YJITと比較しても高速、特に浮動小数点演算を多数実行するso_mandelbrotやso_nbody、app_aobenchでは数倍高速となっています。インタプリタもCRuby(JITなし)と遜色ない速度になっています。 以下、設計と実装について紹介していきますが、その前に必要な基礎知識をおさらいしておきます。 基礎知識 JITコンパイラは実行時に対象言語のプログラムを機械語へコンパイルするモジュールですが、一般的な実装ではインタプリタと並存して動きます。プログラムは抽象構文木

    JITコンパイルをサポートした新たなRuby処理系をRustとアセンブリで書いている話 - Qiita
  • Optimizing Ruby’s Memory Layout: Variable Width Allocation - Shopify

    In this blog post, I’ll be introducing how Shopify is improving CRuby’s performance in Ruby 3.2 by optimizing the memory layout in the garbage collector through the Variable Width Allocation project. Ruby’s Memory Structure and Limitations Ruby is a garbage collected language. It automatically allocates memory when objects are created and releases the memory when it detects that an object is no lo

    Optimizing Ruby’s Memory Layout: Variable Width Allocation - Shopify
  • Ruby 3.2 のIRBの新機能 - Qiita

    これはRubyアドベントカレンダー2022の22日目の記事です。 binding.irb のすすめ 8年前に 今更聞けないpryの使い方と便利プラグイン集 という記事を書き、そこから長い間 binding.pry を愛用していた。binding.irb も binding.pry も使ったことがないよ、という人はご一読をお勧めしたい。 当時PryにあったIRBに対する優位性のうち、時間が経っても常に使い続けた機能といえば binding.pryの存在、$ (show-source)、@ (whereami)、ls とその -G (grep) オプション、デバッグ機能 (要pry-byebugプラグイン) という感じで、他はまあたまに使うかもねくらいの感じになったのだが、なんとこれらはRuby 3.2ではIRBで全て使えるようになった。その上、Gemfileに何も書かなくてもデフォルトで使え

    Ruby 3.2 のIRBの新機能 - Qiita
  • プロと読み解く Ruby 3.2 NEWS - クックパッド開発者ブログ

    技術部の笹田(ko1)と遠藤(mame)です。クックパッドRuby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 昨日 12/25 に、恒例のクリスマスリリースとして、Ruby 3.2.0 がリリースされました(Ruby 3.2.0 リリース)。今年も Ruby 3.2 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ プロと読み解く Ruby 3.1 NEWS -

    プロと読み解く Ruby 3.2 NEWS - クックパッド開発者ブログ
  • Haskell で Union-Find とクラスカルのアルゴリズム

    Haskell で、優先度付きキューを使ったダイクストラ法 でダイクストラ法を実装したので、続けて最少全域木問題に取り組んでみようと思います。 最少全域木問題といえばクラスカルのアルゴリズムです。以下に詳しい解説があります。 最小全域木(クラスカル法とUnionFind) - アルゴリズム講習会 そして、確かずいぶん前に一度実装したような記憶が朧気ながらあって、検索してみたところ過去に自分が書いたブログがヒットしその日付は2009年でした。内容については全く覚えていませんでした。 クラスカルのアルゴリズム 気をとりなおしてクラスカルのアルゴリズムですが、このアルゴリズムは直感的には割と簡単というのが面白いところです。 グラフの辺の中から、重みが小さい順に辺を選んでいく。このとき選んだ辺によりグラフに閉路ができるならそれは選ばない。これだけで、最少全域木が構成される。 直感的には簡単ですが、

    Haskell で Union-Find とクラスカルのアルゴリズム