2017」が開催されました。Makarovさんです。2.4で導入された新しいハッシュテーブルの実装者であり,20年以上に及ぶGCCの開発経験を持つ,コンパイラ開発のスペシャリストです。performance」と題して,発表しました。Ruby)では,1.8.7まで作者のまつもとゆきひろさんが開発していたインタプリタが使われていました。VM)に置き換えられました。Language)へ置き換える変更を実装しました。machineとRTLではそれぞれ優位な点が異なりますが,命令数が短くなること,JITコンパイラとコードを共有することが可能になること等,RTLには今後の実装上で好ましい点が多くありました。そこで,まずはRTLへの移行を実装しました。testによるテストはすべて通っているという段階です。testは,Ruby本体のテストを実行するコマンドで,リポジトリにおけるtest/以下のテストを実行します。RubySpecは実行されませんが,最初のステップとしては非常に良いスタートであると言えるでしょう。マイクロベンチマークでは,既に最大110%のパフォーマンス改善を達成しています。RTLの難点であるコードサイズが大きくなってしまうこと,また,オペランドデコーディングのオーバーヘッドが依然として大きいことがこれからの課題として存在します。そのほかにも,Rubyプロセスを実際に長時間起動させた場合の安定性については検証されておらず,これについても今後の課題となっています。次に発表では,JITの実装方法をいくつか紹介し,比較検討しました。JITを使ってパフォーマンスを改善するには,大きく分けて3つの方法があります。特定の言語に対する最適化を自由に実装できるため,最もパフォーマンスを改善しやすい手法です。JITコンパイラをフルスクラッチで開発することは非常にコストと時間がかかり,メンテナンス性もよくありません。2のGCCやLLVMに代表される最適化コンパイラを利用する方法では,GCCでは300以上の最適化パターンが実装されているためパフォーマンスを改善しやすく,Rubyのコンパイルでは既にGCCを使っているため,新しい依存関係を追加する必要もありません。現在の実装を大きく変更する必要もないので,メンテナンス性にも優れています。すべての最適を施そうとすると,コンパイル時間が非常に長くなってしまうという問題があります。3のJVM,GraalVMに代表される,既に広く使われているJITコンパイラを利用する方法では,安定していて,かつ,信頼のおける最適化を適用できます。主要な既存JITコンパイラは,既にJRubyやTruffleRuby等のRuby実装で使われています。coreチームでは,フルスクラッチでJITコンパイラを実装することは現実的ではありません。JVMやGraalVMは,先述のような別の実装が開発されており,現在のMRIの実装を大きく変更する必要もあります。GCCやLLVMにおけるコンパイル時間が長くなってしまう問題に対しては,パフォーマンスに貢献しない最適化を無効にすることで対処可能です。これらを総合して考えると,2の最適化コンパイラを使うのが,Rubyプロジェクトにとって最も適切な選択だと判断しました。JITがどうやって最適化を施しているかをみていきましょう。MJITの実装を簡潔に言うと,Cコードを動的に生成し,それを実行,さらにそのCコードに対しても最適化を施す,という手法を採用しています。Cコードを動的に生成して最適化を図る手法は,処理が重く,筋の悪いジャンキーな手法であると考えられていることもありますが,注意深く実装することで効率的な最適化を行うことができます。新しい依存関係の追加も必要なく,デバッグも容易に行うことができます。NYオフィスのシニアソフトウェアエンジニアとして開発に従事。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。