タグ

concurrentに関するslay-tのブックマーク (14)

  • 君たちの「並行」の理解は間違ってる

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

    君たちの「並行」の理解は間違ってる
  • Rustで高速に大量のHTTPリクエストを投げる - Qiita

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

    Rustで高速に大量のHTTPリクエストを投げる - Qiita
  • 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/コンディション変数についての解説
  • Improving Ruby Concurrency

    Asynchronicity should be a property of how the program is executed, not what it does. Ruby currently implements mutually exclusive threads and exposes both blocking and non-blocking operations. It also supports Fibers which can be used to implement cooperatively scheduled event-driven IO. The cognitive burden of dealing with these different APIs is left as an exercise to the programmer, and thus w

  • Python 3 の asyncio で http サーバーを書く - Qiita

    先日 JJUG CCC 2017 FALL に参加してきました。 イベントの中で 田所 駿佑 さんによるセッションでプログラミング言語の勉強のためのお題として HTTP サーバーを書こうといった発表がありました。 新しいプログラミング言語の学び方 HTTPサーバーを作って学ぶ Java, Scala, Clojure https://github.com/todokr/simple-http-server おおたに さんと一緒にセッションを聞いてセッションが終わってから HTTP サーバーを書きたくなりましたよね? と問われ、そのときはセッションを聞いてテンションも上がっていたのもあり「あー、そうですね。。。」と相槌をうっていました。 その後、イベントが終わって新宿駅へ歩いていった帰り際にも 帰ったら HTTP サーバーを書くんですよね? と念を押されました。たぶん帰るまでに3

    Python 3 の asyncio で http サーバーを書く - Qiita
  • 挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語としてのElixir】 - エンジニアHub|Webエンジニアのキャリアを考える!

    挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語としてのElixir】 「第二言語としてのElixir」、いよいよ後編では、処理を並行に扱う方法を紹介します。Elixirでは、なぜ並行処理が書きやすく、分散アプリケーションをシンプルに記述できるのでしょうか。 プログラミング言語Elixirの大きな特徴は、並行処理が書きやすく、分散アプリケーションをシンプルに記述できることです。 その背景となる「ErlangのVMにおけるプロセスをベースにした考え方」と「Erlang/OTP」については、前回の記事で説明しました。さらに、Elixirのプロジェクト管理ツールであるmixについても解説しました。 いよいよ今回は、こういったElixirの基礎知識をふまえて、Elixirで処理を並行に扱う方法を紹介します。 Elixirで並行処理を書きやすいわけ Elixirの並行処理に挑戦

    挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語としてのElixir】 - エンジニアHub|Webエンジニアのキャリアを考える!
  • Go 1.9 Release Notes - The Go Programming Language

    Introduction to Go 1.9 The latest Go release, version 1.9, arrives six months after Go 1.8 and is the tenth release in the Go 1.x series. There are two changes to the language: adding support for type aliases and defining when implementations may fuse floating point operations. Most of the changes are in the implementation of the toolchain, runtime, and libraries. As always, the release maintains

    Go 1.9 Release Notes - The Go Programming Language
  • Goでスケールする実装を書く

    スケールする実装を書くためのガイド スケールするために 並列度とアムダールの法則 べき等参照透過性 Lock-FreeとWait-Free アトミックアクセス ロックの局所化 並列度とアムダールの法則 時間単位の場合は繰り返し処理のトータル時間に対し、 並列処理を妨げない処理時間の割合を「並列度」という。 (コードプロファイルを使って求める場合もあるが、 比較的単純なコードでないと計算が複雑になりやすい。) p 並列度 n 並列数 性能比 1/((1-p)+p/n) p=0.9のとき4倍の性能を得るにはn=6が必要。 n=5で4倍の性能を得るにはp=0.938が必要。 n=無限大とすると、性能比は以下の式におちつく。 理論上の性能向上限界 = 1/(1-p) 並列度90%の処理をどれだけ多数コアに分散しても理論上10倍処理効率が限界。 並列度95%の処理をどれだけ多数コアに分散しても理論上

  • Golangの新しいGCアルゴリズム Transaction Oriented Collector(TOC)

    http://golang.org/s/gctoc Goの新しいGCのProposalが出た.まだProposal段階であり具体的な実装はないが簡単にどのようなものであるかをまとめておく. GoのGCはGo1.5において単純なStop The World(STW)からConcurrent Mark & Sweepへと変更され大きな改善があった(詳しくは“GolangのGCを追う”に書いた).先の記事に書いたようにGo1.5におけるGCの改善は主にレイテンシ(最大停止時間)に重きが置かれいた.数値目標として10msが掲げられGo1.6においては大きなヒープサイズ(500GB)においてそれを達成していた. GCの評価項目はレイテンシのみではない.スループットやヒープの使用効率(断片化の対処)なども重要である.Go1.6までのGCではそれらについて大きく言及されていなかった(と思う).例えばスル

  • From Node.js to Go

    Last month Scaledrone migrated all websocket servers from Node.js to Go. We are a realtime messaging company so using the best possible websocket solution is vital to us. We started playing around with Go because the memory required per customer was very high. In the end we got more than we asked for as Go servers use a third of the memory that our Node.js servers did. In addition to the memory us

    From Node.js to Go
  • Go言語の並行性を映像化する | POSTD

    Goというプログラミング言語の強みの1つは、 Tony Hoare考案のCSP に基づくビルトインの並行性(Concurrency)です。Goは並行性を念頭にデザインされているため、複雑に並行したパイプラインの構築を可能にしています。でも、それぞれの並行性パターンがどのように見えるものなのか気になったことはありませんか。 もちろん、気になったことはあると思います。恐らくそれぞれ形は違っても、誰もが頭に描いているのではないでしょうか。もし、「1から100までの数字」について聞かれたら、無意識に頭の中で数字のイメージを思い浮かべると思います。例えば、私の場合、自分の前から1から20までがまっすぐに並び、21以降は90度右に曲がり1000以降まで続くイメージが浮かびます。これは多分私が幼稚園の時に教室の壁に沿って数字が貼られていて、ちょうど角に数字の20があったからなのだと思います。別の例えをす

    Go言語の並行性を映像化する | POSTD
  • 物理サーバを選定する際のポイント – Eureka Engineering – Medium

    もともと日向けに作られていたPairsのモバイルアプリを、どのように国際的に展開できるようにしたのか。国際化・ローカライズの対応を進めたときの実際の流れや工夫を、モバイル開発の視点からまとめています。

    物理サーバを選定する際のポイント – Eureka Engineering – Medium
  • Goffee

    Written in Go, Goffee is a fast, concurrent way to monitor your sites from all over the World. Worldwide monitoring By periodically changing Tor exit nodes, Goffee checks that your site is up from all over the world. Powered by Gophers Actual, real life gophers on little treadmills, working hard to make sure that your site is up.

    Goffee
  • 僕がGrunt.jsで使っているPlugin一覧 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? どんなニーズに基いているか デザインやちょっとしたプログラミングをする人なので、単体テストとかはないです。 デザイナーだけどフロントエンドに興味ある人向け。 2015-02-07: gulp編を作成 gruntからgulpへ移行したので、gulp版の一覧も作成しました。 僕がGulpで使っているPluginとnode.jsモジュール一覧 - Qiita プラグイン一覧:非Contrib系 grunt-aws-s3 S3にアップロードできるプラグインはいくつかあるけど、いくつか試して一番良かったのがこれ。 同名ファイルは確認なしで上書き可

    僕がGrunt.jsで使っているPlugin一覧 - Qiita
  • 1