タグ

Rubyに関するGEROMAXのブックマーク (7)

  • なぜrubyは他の言語と比べて遅いのでしょうか?

    回答 (3件中の1件目) Rubyの実行速度に興味があって、15年くらいMRIの開発をしています。興味があるので長い記事になっちゃったことをお詫びします。 遅いと言ったとき、多分「実行速度」の話をしているんだと思いますが、それ以外にも結構いろんな「はやさ」があります。思いつくところで少しご紹介します。 (1) プログラムを作るはやさ Ruby は生産性が高い言語と言われることが多いので、プログラムを作る早さは早い、という評価が一般的です。 Cで書くと2日かかる。実行時間は0.1秒 Rubyで書くと1日かかる。実行時間は10秒(Cの100倍) と、すこし極端な仮定を置いてみると...

    なぜrubyは他の言語と比べて遅いのでしょうか?
  • バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記

    Ubiregi Advent Calendar 2018 の 18 日目です。 ユビレジではたくさんのお客様の大量の POS データをお預かりしており、様々なバッチ処理も実行されています。今回は特定のケースでバッチ処理の一部が 30 分以上かかっていた処理を 14 秒で終わるようにした話について書きたいと思います。前回の Ruby 2.5 の SEGV と闘った話 - @watson1978 の日記 に引き続き DTrace を使った話になります。 はじめに ユビレジでは CSV ファイルでお客様が特定のデータをダウンロードしたりアップロードできる機能があります。CSV ファイルにエクスポートしたり、CSV ファイルから DB に取り込む処理を Worker を起動してバッチ処理しています。 大量のデータを保有しているアカウントと同量のデータを用意して手元の環境で試したところ時間がかかるこ

    バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記
  • いかにしてRubyを高速化するか? コミッター・卜部昌平が挑んだ「Deoptimization Ruby」の軌跡 - エンジニアHub|若手Webエンジニアのキャリアを考える!

    Ruby1.8.5、1.8.6、1.8.7のリリースマネージャを務め、現在は株式会社マネーフォワードでフルタイムのRubyコミッター職として働く卜部昌平(うらべ・しょうへい/@shyouhei)さんは、deoptimizationと呼ばれるアプローチを用いてRubyの高速化に取り組んでいます。 稿ではその足跡から、いかなる思想のもとでデザインや実装を行っているかを、卜部さん人が解説します。 Deoptimizationの着想に至るまで デザインとは、やらないことを決めること 「最適化が間違っていたら、戻す」をどう実装するか? インストラクションを消し、跡地をnopで埋める 「メソッド呼び出しが省略可能であること」を判定するために 省略可能な呼び出され方を増やす 大き過ぎる問題ではなく、実現できる規模の問題に取り組む Deoptimizationの着想に至るまで 言語を高速化するときに、

    いかにしてRubyを高速化するか? コミッター・卜部昌平が挑んだ「Deoptimization Ruby」の軌跡 - エンジニアHub|若手Webエンジニアのキャリアを考える!
  • RubyのJITに生成コードのメモリ局所性対策を入れた話 - k0kubun's blog

    昨日、RubyのJITの性能改善のためのパッチを入れた。 github.com JITすればするほどRailsが遅くなる問題 Rubyの次期バージョンである2.6には、バイトコードをCのコードに変換した後、gcc/clangでコンパイルして.soファイルにしdlopenすることで生成コードのロードを行なう、MJITと呼ばれるJITコンパイラが入っているのだが、マージしたころのツイートにも書いていた通り、Railsで使うとより多くのメソッドがJITされるほど遅くなってしまうという問題があった。 結果、"MJIT slows down Rails applications"というチケットが報告されることとなり、昨日までの5か月の間閉じることができなかった。 元の構成 対策を始める前のMJITは大雑把に言うとこういう感じだった。メソッド1つごとに1つの.soファイルが作られ、ロードされる。 無制

    RubyのJITに生成コードのメモリ局所性対策を入れた話 - k0kubun's blog
  • よく忘れるRailsのコントローラーでのrenderメソッドのレシピ集 - Rails Webook

    Railsのコントローラーでのrenderメソッドの使い方について説明します。 renderメソッドは、「コントローラー(Controller)」と「ビュー(View)」のそれぞれにあります。 ここではコントローラーのrenderメソッドの使い方を示します。 ビューでのrenderメソッドの使い方は こちらを参照してください。 動作確認 Rails 4.1 目次 1. ビューを表示する 1.1. 暗黙的なビューの表示する 1.2. 他のアクションのビューを表示する(actionオプション) 1.3. 他のコントローラーのビューを表示する(templateオプション) 2. JSONを返す 2.1. renderメソッド 2.2. jbuilder 2.3. ActiveModelSerializer 3. ビュー以外を表示する 3.1. 文字列を表示する(textオプション) 3.2. X

    よく忘れるRailsのコントローラーでのrenderメソッドのレシピ集 - Rails Webook
    GEROMAX
    GEROMAX 2017/10/27
  • ルーティングにアクションを追加 - Ruby on Rails入門

    リソースベースのルーティングの場合、自動で7つのアクションを呼び出すためのルーティングが設定されますが、7つのアクションだけしか利用できないわけではなく他のアクションを追加することも可能です。ここではアクションを追加する方法について解説します。 1.アクションの追加 2.別の記述方法 3.動作確認 アクションの追加 リソースベースのルーティングでは「index」「show」「new」「edit」「create」「update」「destroy」の7つのアクションへのルーティング自動で設定されます。これに別のアクションを呼び出すためのルーティングを追加することもできます。「config/routes.rb」ファイルにサンプルが記載されています。 Sample2::Application.routes.draw do # Sample resource route with options:

    GEROMAX
    GEROMAX 2017/10/27
  • Rubyでシェルコマンドを実行する方法 -- ぺけみさお

    Rubyでは以下4つの方法でシェルコマンドを実行することができる。 Kernel#`, バッククォート `cmd`%記法, %x( cmd )Kernel#systemKernel#exec1. Kernel#`, バッククォート `cmd`これはBash, PHP, Perlなど他の言語と似ている。 シェルコマンドの結果を返す。 終了ステータスは変数$?で参照できる。

    GEROMAX
    GEROMAX 2017/10/27
  • 1