タグ

JITとcompilerに関するtsuwatchのブックマーク (4)

  • RubyKaigiでJITコンパイラの書き方について発表した - k0kubun's blog

    RubyKaigi 2023Ruby JIT Hacking Guideというタイトルで発表してきた。 speakerdeck.com JITコンパイラを書くチュートリアル 今回の発表ではJITコンパイラが書ける人間を増やすことをゴールにしていたが、 30分という短い発表枠内では雰囲気を知ってもらうことにフォーカスし、 実際に手を動かしたい人たちにはそれ用のチュートリアルを触ってもらう形を取った。 github.com JITコンパイラは実は初心者向き 独学でコンパイラの作り方を学ぶ人は、Cコンパイラなどを実装することが多いように思う。 C言語は実装対象として一見シンプルそうに見えて実は結構機能が多いので、C11をゴールに始めてもC89の範囲すら実装しきらないままエターなる人も多いのではないか。 そんな僕みたいな堕落した人間にお勧めなのがJITコンパイラ。 インタプリタと併走する特性上、

    RubyKaigiでJITコンパイラの書き方について発表した - k0kubun's blog
  • VMに手を加えずRubyを高速化するJITコンパイラ「YARV-MJIT」の話 - k0kubun's blog

    先日のRubyKaigi 2017のLTではLLVMベースのCRuby向けJITコンパイラLLRBの話をしました。 5分はちょっとJITの話をするには短かかったですね。 LLRBをふまえた、Cのコード生成への軌道修正 さて、上記の資料にある通り、CRubyのJITにおいてはメインの高速化対象が既に存在するCのコードになるため、 開発の早い段階でパフォーマンスにインパクトを持てるとすればLLVM Passの順番を変えるくらいで、 LLVM IRを直接生成しても最適化上のメリットがほとんどないのでその部分はMJIT と同じくCのコードを生成するように変更したい、という話をした*1。 で、LLRBはC拡張として作るべくちょっと不思議な努力をいろいろやっており、 それらの設計はやってみた結果(コアに直接変更を加えるのに比べ)デメリットの方が大きいと思ったので、 LLRBの失敗を全て生かしつつ、今回

    VMに手を加えずRubyを高速化するJITコンパイラ「YARV-MJIT」の話 - k0kubun's blog
  • [VM][JIT]Brainf*ckで学ぶスクリプト言語処理系高速化。インタプリタ→VMインタプリタ→JITコンパイラ。 - hogelogの日記

    スクリプト言語処理系を高速化したくてしたくてたまらない少年少女に届け。表題の通りスクリプト言語処理系の高速化について書きます。対象言語はBrainf*ckにします。Brainf*ckというのは Brainf*ck Brainfuck - Wikipedia というような言語です。要は処理系を実装するのが簡単なおもちゃ言語。おもちゃ言語ゆえに他のどんな実用的スクリプト言語処理系にも出てくるような基的な処理だけでできているので、Brainf*ck処理系の高速化で有用なテクニックは他の処理系でもうんたらかんたら。 じゃあまず叩き台になるような処理系を書いてみましょう。言語はC++です。JavaだのPythonだので高速な処理系を記述するテクニックやらなんやらというのもありますけども、まずはごく簡単にCPUやらメモリといったものと仲の良い言語で記述することで理解を深めましょう。当はC言語の方が

    [VM][JIT]Brainf*ckで学ぶスクリプト言語処理系高速化。インタプリタ→VMインタプリタ→JITコンパイラ。 - hogelogの日記
    tsuwatch
    tsuwatch 2015/01/07
    いいの見つけた
  • PHPを高速化するRecki-CTとは一体何なのか - hnwの日記

    @ircmaxellさん作の「Recki-CT」を試してみたので紹介します。作者によるブログ記事「ircmaxell's blog: Introducing Recki-CT」によれば処理によってはHHVMやHippy VMより速いらしいのですが、この記事だけでは詳細がよくわからずモヤモヤしていました。今回ソースコードまで確認してみて、前作のPHPPHPを超える変態作品だとわかりました(参照:「PHPPHPがド変態であることに今さら気づいた」)。 Recki-CTを試してみる Recki-CTの概要を説明すると、既存のPHP関数に型情報のアノテーションを記述して呼び出し方を少し変えることで、その関数をJITコンパイルしてネイティブコードとして実行するPHPライブラリです。JITコンパイルにはlibjitPHPバインディングであるJIT-Fuを利用しています。 では、さっそく試してみましょ

    PHPを高速化するRecki-CTとは一体何なのか - hnwの日記
    tsuwatch
    tsuwatch 2014/12/31
    へ、へんたいだー
  • 1