>>802
まず、論理CPU数よりも多いスレッドを立ち上げても余計に遅くなる。
だから長時間膨大なタスクの結果を最速で得るためには、
論理CPU数と同じスレッド数で順に処理する事であり、
当たり前だがC#も含めてスレッドプールはこういう設計になる。
膨大なジョブを論理CPU数よりも多いgoroutineでカバーするのは、一般論としては組み方が悪い。
それで速くなる事はないから。
一般的にはその場合はスレッドではなくただのデータオブジェクトとし、論理CPU数と同じスレッド数で回す。
例えば有限要素法のシミュレーションを行う場合、当然データは100万個とかになるが、
CPUが10個なら10分割して、内部は完全に独立して回し、
他CPU担当と隣接してるノードは致し方ないので通信し、CPU10個で協調させながら回す。
これをgoroutine100万個として組むのがGoの思想なのかもしれないが、速くはならないね。
ただし、プログラムは簡単にはなる。
Erlangはだいぶ思想が違う。
あれはスケールアウト時のパフォーマンス低下を回避するために疎結合にしたもので、
実際スケールアウトしてもほぼ性能低下がないのでひたすら物理で殴れるらしいが、
それならErlangでいいよね、でしかない。
尖るってのは、「○○でも出来る」ではなくて、「○○じゃないと出来ない」の事。
Goにはこれがない。
なおC#、.NET4.0の64bit環境では32767個のスレッドが上限らしい。
https://stackoverflow.com/questions/145312/maximum-number-of-threads-in-a-net-app
一般的には、こんなにスレッドが必要な時点で組み方がおかしい、となる。(上記の通り)
> 一億行百万ファイル
普通は10CPUなら10分割して1,000万行10万ファイル*10ジョブにして投入、
レイテンシがバラつくようなら例えばさらに10分割で100万行1万ファイル*100ジョブにする。
これを1,000,000 goroutineで回すメリットは何?
探検
Go language part 4
■ このスレッドは過去ログ倉庫に格納されています
804デフォルトの名無しさん
2022/02/21(月) 17:01:09.43ID:GbKjQqyn■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】WBC、録画放送含め地上波中継なし (ネットフリックス) [少考さん★]
- 日中関係改善は「下手をすると10年かかる」 トランプを全面信頼できない高市官邸の苦悩★2 [ぐれ★]
- 【速報】長期金利上昇、一時1.980%に [蚤の市★]
- 自民、衆院宮城4区に元タレントの森下千里氏 立民・安住氏の対抗馬 [蚤の市★]
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★10 [nita★]
- 【バレーボール】日本協会・川合俊一会長「先週、文春の記者が自宅に」「明日、記事が掲載されます」 [しゃぶれよ★]
- 日中関係改善、下手すると10年かかる模様 高市はなんでさっさと謝らなかったの・・・ [434776867]
- 自認夏目たかしだが
- 「ヘブン見た」「即ヒメ見た」とお伝えすると良い事があるお🏡
- 【高市悲報】辻元、追加資料公開。官僚が「頼むからこれ踏襲して」と台湾問題に関する歴代総理答弁を渡していた😰 [359965264]
- 解散総選挙したら高市圧勝の情勢調査が自民党本部に届く、野党が不信任だした瞬間全てが終わる模様 [709039863]
- 小学生の時にケンカした相手の両目を鉛筆で刺して失明させてやった
