[過去ログ]
Go language part 3 (1002レス)
Go language part 3 http://mevius.5ch.net/test/read.cgi/tech/1571315884/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
805: デフォルトの名無しさん [sage] 2020/11/01(日) 14:06:47.13 ID:MfA1nG9+ なんで性能向上が不可能なんだろ。 goroutineがたくさん起動する状態だと、同じような処理がタスクの切れ目でスイッチされることになって、キャッシュのヒット率も低くないし、ブランチ予測もそれなりにあてになる状況だろ。 GILかかる言語でもあるまいし。 http://mevius.5ch.net/test/read.cgi/tech/1571315884/805
807: デフォルトの名無しさん [sage] 2020/11/01(日) 16:52:55.99 ID:0aiHjqpe >>806 確認した。(日本語版だけ。英語版は後で読んで少なくとも感想は返す) スライド若干間違ってる、というかこいつ自身同期分かってねえ感じだが、ソフト屋ならこんなもんだろう。 ただいずれにしろ結論として、「共有メモリは遅いから使うな」で良いし、実際それ以上の理解は現実的に必要ない。 >>805 話がずれているのは俺がgreenthreadの定義を狭く捉えすぎていたからだな。 その記事で言う N : 1 だと思っていた。 これまでの俺のgreenthreadについての書き込みは全てこの定義だ。 だから当然他CPUを掴めないので高速化しようがない。 ただしGoが M:N なのは分かった。 しかしこの場合にCPUを跨ぐ為には当然OSのサポートが必要で、 当然そのスライドでもメッセージをkernelに投げてる。 問題はM:Nだと大して美味しくもないことだよ。 いや、Go界では当然凄く美味しいことになってるんだろうけど、N:1だと使える爆速最小実装がまるで使えない。 なら次段階は通常は「常に同一コアに割り当てるスレッド」をグルーピングしてその間だけでもこれを利用しよう、となるところだが、これもやってない。 勿論こんな事をやると思想に反するからだろうけど。 ただまあ、思想として、スケジューラ周りをランタイムに丸投げして「どんなスケールでも最大効率」を目指してるのは分かった。 とはいっても、メッセージをkernelに投げざるを得ない構造になってるから、改善余地があるとすればスケジューラ程度でしかない。 そして、俺は別段OSのスケジューラが間抜けとも思えないけど。 あれ、CPUが余ってたら振ってくるだけだし、実際演算とかで100%CPU掴む環境ならそれで必要十分だからね。 あるだけよこせならpriorityを上げればいいだけだし。 あと強いて言うならスレッドのスタックサイズが小さく済むことか? しかしあれ、俺は知らんがthreadがOS管轄ならOS単位でしか指定出来ないものなのか? それも奇妙だと思うから、普通はシステムコール時に引数与えて指定出来て然るべきであって、 今のLinuxがそうなってなくても当然いつかそうなるものだとも思うけど。 少なくとも.NETはnew Treaadでスレッドの最大サイズを指定出来る。 こいつもランタイムが管理するスレッドかもしれんけどさ。 http://mevius.5ch.net/test/read.cgi/tech/1571315884/807
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s