@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

並列

RactorでWoker pool

Ruby 並行・並列くらべ 2 - @ledsun blog でRactorの並列化とプロセスの並列化が大体同じような性能がでることがわかりました。 Ractorに絞ってもっと性能が出ないか試してみます。 Ractorを作る数を制限していないので、物理コアをこえる数のスレッドを作っ…

Ruby 並行・並列くらべ 2

Ruby並行・並列くらべ - @ledsun blog でRubyの並行・並列の効果を測ってみました。 DBへのIO時間があると、効果がわかりにくかったです。 DBへの書き込み処理をコメントアウトしてリトライしました。 結果 シリアル処理 シリアル処理の実行結果 2m 4s。 DB…

Ruby並行・並列くらべ

Ractorで並列に動いているっぽい? - @ledsun blog の続きです。 Ractorで並列処理が出来そうなので、他の方法と性能を比べてみました。 比べるのは次の4つの方法です。 シリアル処理 スレッド プロセス Ractor シリアル処理は比較用の逐次処理です。 あるAc…

並列プログラムの作り方

並列プログラムの作り方作者:Carriero,Nicholas,Gelernter,David共立出版Amazon 咳さんがどこかですすめてたのを見て2018年に買った本です。 4年の熟成を経て、読んでみました。 原著は1990年発行なので、30年前の本です。 大学の教科書向けの本です。 教科…

雑談会

今年の4月から社内のslackでハドルを使って、週一で30分の(技術的なテーマで)雑談をしています。 今回は僕が司会の回だったので、ActiveJobのバックエンドについて質問しました。 スレッドワーカーのSidekiqで並列化できるわけもなく - @ledsun blog でSid…

スレッドワーカーのSidekiqで並列化できるわけもなく

処理を並列化したらデータベースアクセス速度が低下した謎 - @ledsun blog で「SidekiqのジョブをつかってCPUバウンドな処理を並列化したのに速度低下しておかしい。」みたいなことを書きました。 冷静に考えたら並列化されてません。 RubyのスレッドにはGlo…

処理を並列化したらデータベースアクセス速度が低下した謎

ActiveJobとSidekiqで実装されたとある非同期処理を高速化しようと試みています。 入力ファイルからデータを読み取ってDBへ保存する処理です。 事前処理がそれなりにあるのでCPUバウンドな処理とI/Oバウンドな処理が半々ぐらいです。 CPUバウンドな処理は並…

Romeは本当に速かった

RomeプロジェクトのJavaScriptフォーマッターがリリースされました。 rome.tools ちょうどPrettier を使っているプロジェクトがあったので比較してみました。 本当にめちゃくちゃ速い。prettierで8秒掛かるのが0.5秒とかで終わる。— ぎゃばん@手洗い (@ledsu…

Core i5 12600Kが気になる

Core i5 12600Kベンチマークレビュー:4万円以下で最強のCPUが来たぞ | ちもろぐ 【Hothotレビュー】待望の第12世代Coreついに発売! ベンチマークで見るその実力 - PC Watch DDR4環境でも高性能な「Core i5-12600K」、AMD/Intelの従来モデルと比較してみた -…

concurrently

www.npmjs.com Foremanみたいに複数のプログラムを並列に起動してくれるnpmパッケージです。 npmなので、npmスクリプト中で使うのに、環境設定の面で有利です。 主にwatchスクリプトで使います。 使用例 例えば、次の例ではngcコマンドとesbuildコマンドを両…

2021年の目標設定

2021年の目標 テーマはプログラミング速度が速い分野を増やすです。 2020年は、特定のプロジェクトでのプログラミング速度の向上に成功しました。 とはいえ、今年のオープンソース活動振り返り @ 2020 | Web Scratch と見比べると大分遅く感じます。 また、2…

Ractorを使ってプログラムを書く練習    

注意:Ractorならではとか、計算効率の良さとか考えていません。 1から10までを足す # 最終結果送り先のRactor CR = Ractor.current r = Ractor.new { CR << Ractor.recv } 1.upto(10) do |i| # 数を足すRactorを作ってポインタを置き換える r = Ractor.new(…

2019年のふりかえりと2020の目標

全体的に 私事に掛かるリソースが増えたので、残されたリソースでどうやりくりしたものか工夫した一年でした。 認知度 認知度に関しては、自分の能力以上に認知度が上がっても辛そうなので、一番最初にあきらめました。 その結果が、登壇数0です。 認知度を…

Node学園 31時限目でLTしました #tng31

Node.jsの並列プログラミングについて話してきました。 大量のhtmlファイルをパースする処理を、 child_process.forkを使って複数プロセスへ分散した話をしました。 また、worker_threadsを試した話をしました。 めっちゃフィードバックがもらえて楽しかった…

印象に残ったセッション #rubykaigi

Ferrari Driven Development: superfast Ruby with Rubex Parallel and Thread-Safe Ruby at High-Speed with TruffleRuby (Keynote) Ferrari Driven Development: superfast Ruby with Rubex RubyのC拡張を作るためのプログラミング言語の話でした。 グルー…

2017年にやった技術的なチャレンジ

一年を通して チャレンジ UIのデザイン変更のためにDOM更新アルゴリズムの共通化 サーバサイドのクエリ生成・実行処理の無限リスト化 Wampリクエスト処理の並列化 RailsのDBコネクションプールの統計値を取得 その他 Redmineプラグインの作成 IoTゲートウェ…