並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 40件

新着順 人気順

Concurrentの検索結果1 - 40 件 / 40件

Concurrentに関するエントリは40件あります。 programmingプログラミングgo などが関連タグです。 人気エントリには 『なぜもっとたくさんのコアを搭載したCPUを作らないのでしょうか?2000コアのGPUなんかそこら辺にありますが、なぜCPUでは同じようにできないのでしょうか?』などがあります。
  • なぜもっとたくさんのコアを搭載したCPUを作らないのでしょうか?2000コアのGPUなんかそこら辺にありますが、なぜCPUでは同じようにできないのでしょうか?

    回答 (9件中の1件目) 質問に間違いがありますね。 2000個のコアが入ったGPUなんかありません。企業の広報は違った(間違った)方法で計算して数字を大きく見せています。 Radion 6900XTの本当のコア数(DCU)は、5120個ではなく、40個です。こちらでダイの写真を確認でき、4*5のコアが2グループあります。 各コア(DCU)には32レーンのSIMDユニットが4つあり、各コアには並列に動作する32 bitの浮動小数点演算ユニット(FMA)が128個あり、チップ全体としては32 bitのFMAが5120個同時に動きます。 Zen2とZen3のCPUコアはどちらも256...

      なぜもっとたくさんのコアを搭載したCPUを作らないのでしょうか?2000コアのGPUなんかそこら辺にありますが、なぜCPUでは同じようにできないのでしょうか?
    • Build your own React

      We are going to rewrite React from scratch. Step by step. Following the architecture from the real React code but without all the optimizations and non-essential features. If you’ve read any of my previous “build your own React” posts, the difference is that this post is based on React 16.8, so we can now use hooks and drop all the code related to classes. You can find the history with the old blo

        Build your own React
      • オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ

        オンラインゲームを作ろう!と思ったことがある方は、 こちらの講演記事を1度は見たことがあるのではないでしょうか。 www.4gamer.net こちらの講演は、具体例を交えながら非常に分かりやすくオンラインゲームの主な同期方式が説明してあり、 2024年現在でもオンラインゲームの基礎を学ぶ資料として真っ先に名前を上げる最高の資料です。 しかしながら講演は2010年のものであり、オンラインゲームはこの10年余りで進化しています。 この辺りの進化の話を簡単にまとめつつ、オンラインゲームの同期方式の選び方を紹介します。 (上記講演記事の知識/用語を前提としているため、先に上記記事をお読みください。) オンラインゲームの民主化について 技術の話をする前に。 近年、「マルチプレイヤーゲーム」と聞いてオフラインの画面分割ゲームを想像する人はいないと言って良いほど オンラインゲームは民主化されてきました

          オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ
        • Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG

          こんにちは、R&Dチームの齋藤(@aznhe21)です。 さあみなさん、ついにこの時がやってまいりました。 本日2019/11/8にリリースされたRust 1.39により、あらゆる環境で最高速な非同期プログラミングが可能になりました。 新たな時代に乗り遅れないよう、今のうちにRustでの非同期プログラミングをマスターしておきましょう。 なお、この記事は、先日開催したOPTiM TECH BLOG Meetupの内容を大幅に加筆修正した上でエントリに仕上げたものです。 まず最初に伝えたいこと 非同期の歴史 Rustの非同期プログラミングの歴史 Rust 1.0以前 Rust 1.0 〜Rust 1.3 Rust 1.2あたり Rust 1.11あたり Rust 1.26あたり Rust 1.36 Rust 1.39 Rustの非同期プログラミングの特徴 ゼロコスト抽象化 プラットフォーム非依

            Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG
          • 書評:並行プログラミング入門 - Software Transactional Memo

            TL;DR 並行処理を実装する人のこれからのスタンダードになる一冊。買い。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ 作者:高野 祐輝 オライリージャパン Amazon 買ったら思いの外早く届いたのでパラパラと読み始めたら一気に読み終えてしまった。 総評 敢えて雑な喩え方をするなら The Art of Multiprocessor Programming (通称TAoMP本) の内容を薄めてRustやアセンブラや計算モデルを足したような本だった。 日本語の書籍としてはかなり珍しくWait-Free, Lock-Free, Obstruction-Freeの違いなどを適切に論じており、TTAS Lock, MCS Lock, TL2といった日本語では希少な情報が書かれているレアな本である。これらに付いて論じている日本語の本は知る限り (TAoMP本と昔僕

              書評:並行プログラミング入門 - Software Transactional Memo
            • JavaScriptの非同期処理を理解する その2 〜Promise編〜 | さくらのナレッジ

              こんにちは!小田島です。前回の「コールバック編」を納稿したとき、アイキャッチ画像はJavaScriptのロゴにタイトルの文字を入れただけというとんでもないやっつけ仕事だったのですが、さくナレ編集部の方に「シリーズで理解が深まる」というすごい煽り文句がついたとてもカッコいい画像に差し替えていただきました。アイキャッチ詐欺にならないようにがんばります。 非同期処理シリーズの2回目はPromiseについての説明です。前回はコールバックについて説明しましたが、Promiseを使うことでどのように便利になったのでしょうか。それでは見ていきましょう!今回はコードが多いのでかなり分量が多く感じられるかもしれませんが、実際はあまり大したことはありません。 今回の目的 今回説明するのはPromiseです。これはFutureパターン(Promiseパターン)というデザインパターンの一種で、ECMAScript

                JavaScriptの非同期処理を理解する その2 〜Promise編〜 | さくらのナレッジ
              • Rubyの並列並行処理のこれまでとこれから - クックパッド開発者ブログ

                技術部の笹田です。今日で退職するので、バタバタと返却などの準備をしています。 本記事では、Rubyの並行並列処理の改善についての私の取り組みについて、おもに RubyKaigi 2022 と 2023 で発表した内容をもとにご紹介します。 並行と並列はよく似た言葉ですが、本記事では次のような意味で使います。 並行処理(concurrent processing)は、「複数の独立した実行単位が、待っていればいつか終わる(もしくは、処理が進む)」という論理的な概念で、古典的にはタイムシェアリングシステムなどが挙げられます。 並列処理(parallel processing)は、「複数の独立した実行単位のうちのいくつかが、あるタイミングで同時に動いている」という物理的な概念で、古典的には複数のCPU上で同時に実行させる、というものです。最近では、1つのCPU上で複数コアが同時に動いている、という

                  Rubyの並列並行処理のこれまでとこれから - クックパッド開発者ブログ
                • Python 3.12で増えた並列処理と、これまでの並列処理の挙動を比べてみる - Qiita

                  この記事ですることを3行で Pythonの標準ライブラリでできる並列実行を、あらためて総当たりで速度比較しよう ウォーターフォールチャートで、それぞれの並列処理の処理時間の特徴を可視化しよう boto3の実行をモデルケースにして、どの並列処理が一番早いのかを調べよう この記事の結論を先に Python 3.12から本格的に使えるようになったサブインタープリターは、CPUで実行する処理について言えば、従来のサブプロセスよりも高速 boto3の実行は、サブインタープリターよりも署名付きURLの非同期実行のほうが速い → S3からの10ファイルの取得であれば、実行時間を90%削減できます → Bedrockの3回実行であれば、実行時間を60%削減できます 今回使ったソースコードはこちらに置いています。 お手持ちの環境で再実行できるようにしていますので、気になる方はぜひ。 どうしてこの記事を書くの

                    Python 3.12で増えた並列処理と、これまでの並列処理の挙動を比べてみる - Qiita
                  • 並行処理の基礎を学ぼう - Enablement Workshop for Gophers

                    はじめに 2023年5月10日に開催されたEnablement Workshop for Gophersで「並行処理の基礎を学ぼう」というタイトルで講義を行ないました。 Enablement Workshop for Gophersは、ナレッジワークが学生向けに提供する手を動かしながら基礎を学ぶ"Enablement"の機会です。 今回のテーマは2023年6月21日〜23日に行われるEnablement Internship for Gophersに合わせて『並行処理』です。 具体的には主に以下のような並行処理の基礎や最近または今後のアップデートについてお話しました。 ゴールーチンとチャネル syncパッケージ コンテキスト 講義の様子はYouTubeで公開されています。 ゴールーチンとチャネル Goの有名な特徴の1つとしてゴールーチンとチャネルを用いた並行処理があります。 講義では、ゴー

                      並行処理の基礎を学ぼう - Enablement Workshop for Gophers
                    • 言語のスレッド実装の雑な話(Green threadからGoのgoroutineまで)

                      Twitterで "green thread" という単語をたまたま見かけたので、知っていることをつぶやいたよ。 Green thread 言語のスレッドとOSのスレッドの関係 N:1 mapping 言語のスレッドの全てがひとつのOSのスレッドの上で実行されるもの。その代表が上記のJavaのgreen thread。 OSのシステムコールを呼ぶときには必ずnonblockingモードを使い、EAGAIN または EWOULDBLOCKが返ってきたときには他のスレッドの実行権に譲るようにする必要がある。うっかりシステムコールでブロックされてしまうと、全部のスレッドが巻き添えになって動けなくなる。 スレッドの生成やコンテキストの切り替えは軽い。しかし、マルチコアを生かすことができないため、シングルコアの環境でのみ使用される。 1:1 mapping OSのスレッドと言語のスレッドが1対1対応

                        言語のスレッド実装の雑な話(Green threadからGoのgoroutineまで)
                      • Ruby に Software Transactional Memory (STM) を入れようと思った話 - クックパッド開発者ブログ

                        技術部でRubyインタプリタの開発をしている笹田です。コロナの影響で、リモート勤務などに移行し、新しい生活スタイルを満喫されている方々がたくさんいらっしゃるんじゃないかと思います。ただ、私は以前から自主的に自宅勤務することが多かったので、正直生活がぜんぜん変わっていません。 さて、家で私が何をしているかというと、Ruby 3の準備です。その中でも、数年取り組んできた Ruby で並列処理をするための仕組みである Ractor の開発をしています(以前は Guild というコードネームで呼んでいました)。Ractor という名前は、Ruby の Actor みたいな意味で付けました。Erlang とか Elixir で有名な Actor model というアレです。厳密には、Actor model でよく言われる特性をすべて備えているわけではないのですが、並列で動く Ractor を複数作る

                          Ruby に Software Transactional Memory (STM) を入れようと思った話 - クックパッド開発者ブログ
                        • ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita

                          非同期プログラミングについて、イメージだけを超速で掴むための記事を書きました。非同期プログラミングが全くわからない人、具体的には、「async await ってなに……?」「for 文で実行していくのと何が違うの……?」レベルの人を想定しています。 非同期プログラングって何? 同期的じゃないプログラミングです。同期的ということは、プログラムが上から下に順々に実行されるということです。つまり、普通のプログラムはだいたい同期的です。言い換えれば、非同期プログラミングは順番が入れ替わる(可能性)のあるプログラムです。なぜそんなことをするかについては後述します。 ペペロンチーノを作りたい あなたはペペロンチーノを作りたいとします。以下のタスクが必要です。 パスタを茹でる(5 分) ニンニクを切る(1 分) ソースを作る(4 分)、ただしニンニクを切っている必要がある 盛り付けをする(0 分)、ただ

                            ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita
                          • PEP 703 - 兼雑記

                            https://peps.python.org/pep-0703/ Python の GIL 外す話。これすごく楽しい読みものでした。参照カウントのところが一番人気だと思うのですが、他のところも色々良い。こういう、「んーこういうことするとこういう問題が起きない?」と思ったら次の章くらいでそれが説明される、みたいな読みものは大変好きです 参照カウント: オブジェクトっていうのは作ったスレッドが解放するというのがほとんどなんだから、その場合はロックをいらなくする、他に渡ったら普通の参照カウントぽくする、という話。 Swift に 2018 年に導入された 話らしい。他のスレッドに渡された後で DECREF すると他スレッド用の参照カウントが負になりうるのだけど、その時に queue に入れるということをして、ややこしいので、なんかこれ無しですむ方法はないのかなぁ……と Immortalize

                              PEP 703 - 兼雑記
                            • 君たちの「並行」の理解は間違ってる

                              TL;DR 並行計算の理解を間違ってる人が多いので正したい 並行計算=同時に実行すること 並列計算≒同等のタスクを並行計算すること もうちょっとちゃんと書いたフォローアップ記事も合わせて、お時間が許すようであればお読みください。 状況 並列と並行 / 多言語からみるマルチコアの活かし方に見られるように並行(concurrent)とは「複数の処理を順番に実行すること」とする誤った記述を、この記事に限らずチラホラ目にします。 大事になことなので繰り返しますが、間違った記述を含んでいるのはこの記事だけに限りません。 そのような誤った記述を見かけるたびに「ああこの人も間違ってるのか」と諦観を抱くだけというのもあまりに非生産的なので、間違ってますよとポインタとして示せるように簡単な読み物にしたものがこの記事です。 事実 計算=computingの分野においては並行=concurrentと並列=par

                                君たちの「並行」の理解は間違ってる
                              • JDK 21 の開発者向けの新機能 - 赤帽エンジニアブログ

                                Red Hat のソリューションアーキテクトの瀬戸です。 この記事はRed Hat Developerのブログ記事、What's new for developers in JDK 21 | Red Hat Developer を、許可をうけて翻訳したものです。 Java開発者にとってエキサイティングな情報として、今年 9 月 19 日に JDK 21 がリリースされました。 このリリースには、仮想スレッド(Virtual Thread)、レコードパターン(Record Patterns)、順序付コレクション(Sequenced Collections)など、Javaのエコシステムに利益をもたらす多くの新機能が含まれています。JDK 21 のプレビューには、文字列テンプレート(String Templates)、スコープ付値(Scoped Values)、構造化並列処理(Structure

                                  JDK 21 の開発者向けの新機能 - 赤帽エンジニアブログ
                                • Go1.14のcontextは何が変わるのか - Qiita

                                  背景 Go1.14 で context パッケージが少し改善されるのは mattn さんの twitter を見て知った方も多いのではないでしょうか。このツイートされた時期と同じくらいにちょうど社内の勉強会で context パッケージをみんなで読んでおり、皆完全に context を理解したので ある程度実装も把握していました。勉強会では GoDoc と最新 master ブランチのコードが結構違うね、みたいな話もありました。ということで、個人的にとても興味深いツイートでした。Go.1.14のリリースノートには記載されていないのがミソです(2020/02/23現在)。 Go 1.4 のリリースノートにまだ含まれてないけど context の WithCancel と WithTimeout の伝搬がこのコミットで速くなってる。https://t.co/gJiT81uVyj — mattn

                                    Go1.14のcontextは何が変わるのか - Qiita
                                  • Rustで高速に大量のHTTPリクエストを投げる - Qiita

                                    自己紹介 趣味でRustをやっている Twitter https://twitter.com/hatookov Github https://github.com/hatoo SoundCloud https://soundcloud.com/gfyxxqjngkze ネットワーク初心者なので誤りがあるかも知れません モチベーション oha HTTPロードジェネレータ Apache Bench(ab)みたいな tui-rsでリアルタイム表示 とにかくいっぱいリクエストを投げたい! ベンチマーク環境 WSL 2 Ryzen 3950x 今回はtokio https://github.com/hatoo/rust_http_benchmarks ベンチマーク雛形 ベンチマーク系のライブラリは複数回実行してしまい、時間がかかるのでやめた ざっくりと時間がわかればいいかな 簡単のためにサーバーはw

                                      Rustで高速に大量のHTTPリクエストを投げる - Qiita
                                    • Optimize long tasks  |  Articles  |  web.dev

                                      Optimize long tasks Stay organized with collections Save and categorize content based on your preferences. Commonly available advice for making your JavaScript apps faster often includes "Don't block the main thread" and "Break up your long tasks." This page breaks down what that advice means, and why optimizing tasks in JavaScript is important. What is a task? A task is any discrete piece of work

                                        Optimize long tasks  |  Articles  |  web.dev
                                      • 並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG

                                        こんにちは、ROBOT PAYMENTの開発統括室ペイメントシステム課のtaniguchikun です。 たまたま業務で並列処理と排他処理を実装することになったので、その辺について記事にしたいと思います。 並列処理とはなんぞや 例え話 排他処理 今回のキーワード ミューテックス セマフォ Lock関数(C#言語) チェックポイント 静的変数 サンプルコード ミューテックスの挙動確認 セマフォの挙動確認 ロック関数の挙動確認 並列処理とはなんぞや 恐らく本記事を読まれている方はエンジニアの方々だと思いますが、一応軽く解説をしたいと思います。 並列処理とは複数の処理を同時に行うといったものになります。 例え話 上記でピンとくる方は読み飛ばしていただいて問題ないです。 一般の方でプログラミングしたことがない方ですと例え話で説明した方がピンとくるものがあると思うので、現実世界のバスに例えたいと思い

                                          並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG
                                        • research!rsc: Coroutines for Go

                                          This post is about why we need a coroutine package for Go, and what it would look like. But first, what are coroutines? Every programmer today is familiar with function calls (subroutines): F calls G, which stops F and runs G. G does its work, potentially calling and waiting for other functions, and eventually returns. When G returns, G is gone and F continues running. In this pattern, only one fu

                                          • 2019 年の非同期 Rust の動向調査 - Qiita

                                            この記事は 2018 年の非同期 Rust の動向調査 の続報です。 TL;DR Rust 1.39.0 以降で async/await 構文が使えるようになりました Future を実行するためのランタイムはいままで tokio だけでしたが、別に async-std というのができました async/await を使うライブラリを選ぶときはこの2つのランタイムのどちらで動くのかを確認しましょう。 特に理由がなければ tokio を使うのがいいでしょう。 2018 年からの差分 一年前から非同期 Rust を追いかけている人向けの情報です。 組織の再編 昨年は async/await を stabilize させるための async-foundations とツールチェーンを調査する web-foundations というグループが発足しました。 しかし諸事情により Async Foun

                                              2019 年の非同期 Rust の動向調査 - Qiita
                                            • Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ

                                              Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる はじめにこんにちは。TIG DX ユニット所属、金欠コンサルタントの藤井です。先日、Google Pixel 7aを購入しました。これまでiPhone 7 Plusを使っていたので、使用スマホの時代が7年ほど進みました。Googleは検索エンジンからAI、スマホまで作っていてすごいですね。 ということで今回は、Google発のプログラミング言語であるところのGoの1.21がリリースされることを記念した、Go 1.21 連載 の記事を書きます。 本記事では、いくつか変更の入った、contextパッケージについて記載していきます。 contextそのものについては、フューチャー技術ブログにおいても数多く解説されていますので、詳細な説明は割愛します。数例記載しますので、

                                                Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ
                                              • 書評: 並行プログラミング入門

                                                まえがき オライリーから発売される「並行プログラミング入門」が若干早く入手できました。せっかくなので、紹介とか感想を書いてみようかと思います。結論だけ先に書いておくと、並行/並列プログラミングに興味があるなら買いましょう必ず役に立ちます。 どんな本? この本は、大学のOSの授業とかで習うような並行/並列プログラミングの基礎を網羅的に扱っている素晴らしい本です。それだけに留まらず近年利用されているような幅広い技術に関する発展的な内容まで広く扱っています。 どんな人におすすめ? 並行/並列プログラミングの基礎が学びたい人 ロックなどの基礎技術の実装例について学びたい人 Rustを使った並行/並列プログラミングについて学びたい人 並行/並列プログラミングの計算モデル(意味論など)について学びたい人 ロックフリー、STM、async/awaitといった最新の技術について学びたい人 書籍の紹介 この

                                                  書評: 並行プログラミング入門
                                                • sync.Cond/コンディション変数についての解説

                                                  sync.Cond(コンディション変数)について、Goをよく使ってる人たちですら「うまく説明できん」という話がmercarigoで出てたので、あとで誰かの役に立てばよいな、という気持ちで新たな解説記事を書いてみたいと思います。 自分はPerl5をバリバリ書いていた時代ではAE::Cond、Goを使うようになってからはsync.Condと、とにかく非同期処理でピタゴラ装置を作らないといけない時はこの仕組みがあったことでロジックを無駄に小難しくしないで実装することができたので、この仕組みは是非広く知られて欲しいのです。 というわけでまたあらたにGoのsync.Condを解説してみます。 なお、Web+DB Press vol 113の私の連載、「Goにいりては…」でもこの話を書いていますが、あちらの記事では Broadcast を使った方法ではなく、 Signal を使った方法について書いてあ

                                                    sync.Cond/コンディション変数についての解説
                                                  • React Concurrent Mode の概要をおさえる - うどん よこみち

                                                    はじめに この記事は, Introducing Concurrent Mode (Experimental) – React を,和訳しつつ自分の解釈や図を少しだけ足したものになります. 筆者は,そこまで英語が得意ではないので,一部適切でない表現があるかもしれませんがご了承ください. Introducing Concurrent Mode (Experimental) Blocking vs Interruptible Rendering Concurrent Mode は,バージョンコントロール を使って説明します. ここで言うバージョン管理というのは,gitのようなバージョン管理システムです. ブランチを切って作業を行い,他の人が pull できるように作業ブランチをマスターにマージします. バージョン管理の概念が存在する前と後では,開発ワークフローは大きく異なっていました. ブランチ

                                                      React Concurrent Mode の概要をおさえる - うどん よこみち
                                                    • Rubyのスケール時にGVLの特性を効果的に活用する(翻訳)|TechRacho by BPS株式会社

                                                      概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Practical Effects of the GVL on Scaling in Ruby 原文公開日: 2020/05/11 著者: Nate Berkopec サイト: Speedshop -- フロントエンド、バックエンド、環境を含めたフルスタックのRailsパフォーマンスコンサルタントです。 画像は元記事からの引用ですが、著作権を確認しきれないものはリンクにとどめました。 コンカレンシーとパラレリズムの説明がとても丁寧なのが嬉しいポイントです😋。 概要: MRI RubyのGlobal VM Lock(GVL)は、何かと説明が的外れだったり誤解されたり批判にさらされたりしがちです。RubyはGVLのせいでコンカレンシーにもスケーリングにも縁がないのでしょうか?この点を完全に理解するには、Rubyの仮想マシン(

                                                        Rubyのスケール時にGVLの特性を効果的に活用する(翻訳)|TechRacho by BPS株式会社
                                                      • Detailing Python's Coroutine out of History

                                                        Finatextによる セキュリティとアジリティを両立する為の秘訣 / the-secret-to-balancing-security-and-agility

                                                          Detailing Python's Coroutine out of History
                                                        • なぜ Go では何百万もの Goroutine を作れるのに Java は数千のスレッドしか作れないのか?

                                                          なぜ Go では何百万もの Goroutine を作れるのに Java は数千のスレッドしか作れないのか? (この記事は Why you can have millions of Goroutines but only thousands of Java Threads の翻訳です) 経験のあるエンジニアならば JVM 言語で次のようなエラーを見たことがあるでしょう。 [error] (run-main-0) java.lang.OutOfMemoryError: unable to create native thread: [error] java.lang.OutOfMemoryError: unable to create native thread: [error] at java.base/java.lang.Thread.start0(Native Method) [erro

                                                            なぜ Go では何百万もの Goroutine を作れるのに Java は数千のスレッドしか作れないのか?
                                                          • Writing a Ractor-based web server<!-- --> • Kir Shatrov

                                                            Ractor, the new concurrency primitive in Ruby, has been merged to the upstream few days ago. I’ve been following that PR and watching the author’s talk at RubyKaigi (in Japanese, I wasn't able to find the translated version but it should be available somewhere), which got me excited to try Ractor myself. A web application server is the first thing that comes to mind when playing with concurrency.

                                                            • research!rsc: Storing Data in Control Flow

                                                              A decision that arises over and over when designing concurrent programs is whether to represent program state in control flow or as data. This post is about what that decision means and how to approach it. Done well, taking program state stored in data and storing it instead in control flow can make programs much clearer and more maintainable than they otherwise would be. Before saying much more,

                                                              • 並行処理と並列処理|Goでの並行処理を徹底解剖!

                                                                  並行処理と並列処理|Goでの並行処理を徹底解剖!
                                                                • How Much Memory Do You Need to Run 1 Million Concurrent Tasks? | Piotr Kołaczkowski

                                                                  In this blog post, I delve into the comparison of memory consumption between asynchronous and multi-threaded programming across popular languages like Rust, Go, Java, C#, Python, Node.js and Elixir. Some time ago I had to compare performance of a few computer programs designed to handle a large number of network connections. I saw huge differences in memory consumption of those programs, even exce

                                                                  • その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 - Qiita

                                                                    ※ 本記事ではざっくりとした理解を目的とするため、スレッドとプロセスとコア、非同期処理と並列処理と並行処理の違いについて詳細には取り扱いません。気になる方は下記の記事などをご参考ください。 async スレッド数もコア数も1 だから並列処理じゃなくない? というツッコミは正解です。正確には並列処理ではなくて「非同期処理」といいます。フロントエンドのJavascriptから始めた方にはなじみが深いかもしれませんが、「非同期処理」と「並列処理」は全く違う概念なのでご注意ください。 処理の概要としては、最初に複数のリクエストを投げておいて、レスポンスが全部帰ってくるまで待ち、応答が揃ってから処理を再開します。 これにより、応答に 3~7秒(平均5秒)かかるスクレイピングを100回行う場合、同期処理なら500秒程度かかるところ、asyncを使った非同期処理なら7,8秒程度で実行できます。 (外部と

                                                                      その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 - Qiita
                                                                    • I'm not feeling the async pressure

                                                                      I'm not feeling the async pressure written on Wednesday, January 1, 2020 Async is all the rage. Async Python, async Rust, go, node, .NET, pick your favorite ecosystem and it will have some async going. How good this async business works depends quite a lot on the ecosystem and the runtime of the language but overall it has some nice benefits. It makes one thing really simple: to await an operation

                                                                      • Unicorn vs Puma vs Passengerの比較まとめ | Scout APM Blog

                                                                        Rubyのアプリケーションサーバーのエコシステムは、Unicorn、Puma、Passenger 5 の3つを中心に出来上がっています。Rubyにおいて、アプリケーションサーバーが解決しなければならない具体的な問題はなんでしょうか。どのようにして最適なアプリケーションサーバーを選択すればよいでしょうか。2019年にはこれらのアプリケーションサーバーのニーズはあるでしょうか。 この記事ではこら全てを取り上げ、Rubyの主要なアプリケーションサーバーを比較していきます。 How important is an app server's raw speed? アプリケーションサーバーそのものの速度がアプリケーションの速度に対して多くの要因となることはほとんどありません。アプリケーションコード、データベースのクエリ、HTTPコールのRubyアプリケーションサーバーとの間の応答速度が、マイクロ秒ない

                                                                          Unicorn vs Puma vs Passengerの比較まとめ | Scout APM Blog
                                                                        • 並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用

                                                                          近年ではIoTでエッジ/フォグ・コンピューティングを行う事例が増えてきており,IoTにも計算パワーが求められるようになってきている.そこで,近年,アメリカを中心に注目を集めている開発プラットフォームNervesと,我々が研究開発を進めている並列処理ネイティブコード生成系である Pelemay Super-Parallelism を組合わせて,エッジ/フォグ・コンピューティングに用いることを提案する.現状の Pelemay は Clang / GCC を使って単一コアのSIMD命令を含むネイティブコードを生成する.本研究により,Raspberry Pi 3 Model B+ (ARM Cortex-A53ベース) と Raspberri Pi 4 Model B (ARM Cortex-A72ベース)の Nerves システム上と,Jetson Nano (ARM Cortex-A57ベース

                                                                            並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用
                                                                          • multiprocessingとグローバル変数

                                                                            2019/12/10 01:00 これは DeNA Advent Calendar 2019 の10日目のエントリーです。 9日目は jukey17 さんの Google.Protobuf.Reflectionを利用してC#でProtocol Buffersを汎用的に解析する話 でした。 動作環境など 本エントリに登場するサンプルのコードは次の環境で動作を確認しています。 macOS: 10.15.1 Python: 3.8.0 リポジトリ: https://github.com/tsuyukimakoto/chore_multiprocessing_py38 Python3.8(macOS)のmultiprocessingについて さて、Pythonには GIL(Global Interpreter Lock) という制限があるため、マルチコアを活かすためにマルチスレッドではなくてマルチ

                                                                            • AsyncCacheのススメ(非同期処理の多重実行防止のための個人的ベタープラクティス)

                                                                              この記事は何? ボタンをタップすることでAPIコールなどの非同期処理を実行するような実装をしている場合に、ボタン連打によって非同期処理が何度も呼び出されてしまう問題を回避するため実装について、個人的なベタープラクティスを伝える記事です。 この記事が対象としている読者 Flutterを使い始めてまだ日が浅い開発者 「Flutterらしい書き方って何だろう」と考えるようになった開発者 「AsyncCacheって何?」と気になった開発者 結論 非同期処理を重複して実行させないような実装を行う際には、asyncパッケージの AsyncCache.ephemeral() を使うと手軽に多重実行を防止できるため便利でおすすめです。 cacheStrategy = AsyncCache.ephemeral(); ~ 省略 ~ ElevatedButton( onPressed: () async { a

                                                                                AsyncCacheのススメ(非同期処理の多重実行防止のための個人的ベタープラクティス)
                                                                              • Javaのsynchronizedの解説と典型的誤り集(記事の誤りや意見等あれば是非教えてください) - Qiita

                                                                                synchronizedの基本 プログラムにてスレッドを分けて処理しているけれど、複数スレッドに同時に処理を行わせてはいけない箇所(クリティカルセクション)があり、そこでは処理実行可能なスレッドを制限したいときなどに使う。 synchronizedと書けばいつも内部がシングルスレッド処理になるというものではないので、何のインスタンスを使って領域を守っているかをしっかり意識すること。 synchronizedメソッド synchronizedメソッドは、そのインスタンスにおいてsynchronized記述されているメソッドを実行できるスレッドを1つだけに制限するためのもの。 以下のクラスにおいて、someMethod()およびanotherMethod()はsynchronizedメソッドであり、このsomeClassインスタンスに対して複数のスレッドがsomeMethod()やanothe

                                                                                  Javaのsynchronizedの解説と典型的誤り集(記事の誤りや意見等あれば是非教えてください) - Qiita
                                                                                • Compare and Swap

                                                                                  Compare and swap is a technique used when designing concurrent algorithms. Basically, compare and swap compares the value of a variable with an expected value, and if the values are equal then swaps the value of the variable for a new value. Compare and swap may sound a bit complicated but it is actually reasonably simple once you understand it, so let me elaborate a bit further on the topic. By t

                                                                                    Compare and Swap
                                                                                  1

                                                                                  新着記事