タグ

並列に関するastk_fのブックマーク (7)

  • PHPはマルチスレッド化で爆速化できるか? pthreadsの使い方(基礎編)

    PHPの拡張モジュール「pthreads」を使ってマルチスレッド処理ができれば、PHPの弱みである処理速度を向上できるかもしれません。 PHPの開発で並列処理はほとんど使われていません。確かにシンプルにシングルスレッドで同期したプログラムを書きたくなるものの、並列処理を取り入れることでパフォーマンスを大きく改善できる可能性があります。 この記事ではpthreadsという拡張モジュールを使ってPHPでマルチスレッド処理をする方法を紹介します。必要な環境はZTS(Zend Thread Safety)バージョンのPHP 7.xとpthreads v3です。執筆時点では、PHP 7.1ユーザーはpthreadsリポジトリーのマスターブランチからインストールする必要があります。詳しくは『How to Install PHP Extensions from Source(サードパーティー拡張モジュー

    PHPはマルチスレッド化で爆速化できるか? pthreadsの使い方(基礎編)
  • [CEDEC]「FINAL FANTASY XV」の最適化はこうして行われた

    CEDEC 2016では,開発環境,グラフィックス,AI,キャラクター,バックエンドシステムなど,全部で5つのテーマの「FINAL FANTASY XV」(以下FFXV)関連セッションが最終日に行われ,それこそ,丸一日FFXVセッションを聞くこともできるほどの充実ぶりであった。 稿では,この日,3番めに行われたエンジニアリング系のセッションである「AAAタイトル開発における最適化 FINAL FANTASY XV実例紹介」の内容をレポートしたい。タイトルにはFFXVの名前が入っているが,ゲームプログラミング全般に応用できそうな内容となっていたので,広く参考になるのではないかと思う。 FFXVでのゲームループ並列化の変遷 前半の講演を担当した佐藤達磨氏(スクウェア・エニックス,第二ビジネスディビジョン,プログラマー) FFXVは,Luminous Studioというスクウェア・エニックスに

    [CEDEC]「FINAL FANTASY XV」の最適化はこうして行われた
  • Go言語の並行処理デザインパターン by Rob Pike 前編 - Qiita

    少し古いですが、Rob Pikeの並行処理デザインパターンのビデオで取り上げられたコードまとめです。 オリジナルのソースコードはこちらで見れます。 Generator ジェネレータ package main import ( "fmt" "math/rand" "time" "runtime" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) rand.Seed(time.Now().UnixNano()) c := boring("boring!") // Function returning a channel. for i := 0; i < 5; i++ { fmt.Printf("You say: %q\n", <-c) } fmt.Println("You're boring: I'm leaving.") } func

    Go言語の並行処理デザインパターン by Rob Pike 前編 - Qiita
  • Go 言語における並行処理の構築部材 - 詩と創作・思索のひろば

    5年前に買った『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』をようやく読んだ。買った頃には Perl やシンプルな JavaScript ばかり書いていたので並行プログラミングなんてほとんど気にすることがなく、実感がなくて読むのも途中で止まってしまっていたで、家を掃除しているときに見つけたもの。その後も趣味Android アプリを書くなど Java に触れる機会はあったけれど、せいぜいが AsyncTask を使うくらいで、マルチスレッドを強く意識してコードを書くこともなかった。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 30人 クリック: 442回

    Go 言語における並行処理の構築部材 - 詩と創作・思索のひろば
  • ソフトウェアのスケーラビリティについてスターバックスが教えてくれること | POSTD

    2004年に Gregor Hohphe が「 スターバックスでは2相コミットを使わない(Starbucks Does Not Use Two-Phase Commit) 」という優れた投稿を発表しました。それを読んでいたら、学生時代にスターバックスでアルバイトをした頃がいきなり関わってきました。何年もの間に次第に分かってきたのは、プログラマでさえ有名なコーヒーショップのチェーンから学べることが思った以上にあるということです。 多くの人はスケーラビリティのあるソフトウェアを作ろうしますが、最初に考えていたよりも非常に難しいことがあります。個々のタスクをこなしているうちに「あらゆるものの重要性は等しく、同じリソースを必要とし、決まった順序で同期的に進行する」と考えてしまう罠に陥ってしまうのです。 実際には、少なくともスケーラビリティのあるシステムでは、当てはまりません。もちろんスターバックス

    ソフトウェアのスケーラビリティについてスターバックスが教えてくれること | POSTD
  • php で手軽に並列処理をするライブラリ Snidel を作りました - 暁

    シルバーウィーク中に php のライブラリを作りました。 ackintosh/snidel Snidel (スナイデル) について 他の言語のマルチスレッド等の並行・並列処理のための機構に近い書き心地で php で手軽に並列処理をする。というのがコンセプトです。 子プロセス数の制御に メッセージキュー プロセス間のデータのやりとりに 共有メモリ を使っています。 命名に特にこだわりは無いのですが、響きがシュッとしてていいかなと思ってます。 ただ、この記事を書きながらGoogle翻訳にかけてみたらエストニア語で「薬物使用者を注入」って出てきたので少し怖くなってきました…。 proc_open() や exec() でコマンドをバックグラウンドで実行するのではなく、 Callable を別プロセスで実行して、結果を親プロセスが受け取るかたちにしたかったので PCNTL関数 を使うようにしました

    php で手軽に並列処理をするライブラリ Snidel を作りました - 暁
  • 構造化『並列』プログラミング - どらの日記

    構造化プログラミング。 といえば、順次、分岐、ループのパターンからなる、シリアルプログラミングにおける基スタイルですね。(これらだけしか使わなくてもシリアルプログラムは書けますっていうね) C++にはあらかじめこれらのパターンを簡単に使えるようにシンタックスが用意されています。 分岐はifやswitch、ループはwhile、for、doといったかんじで。 もちろんこれらのパターンは並列プログラミングでも使えます。 しかし並列プログラミングにおいては、これらのパターンだけで実装を行うことはほぼ不可能です。 そこで、並列プログラミングにおけるパターンとなる構造が考えられてきました。 これらを使うことで、よりパワフルかつ簡潔に並列プログラムのコードを書けるようになります。 1.マップ もっとも基的な並列パターンです。 まず、コードを見てください。 template <class T> voi

    構造化『並列』プログラミング - どらの日記
  • 1