Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
公式
https://golang.org
公式ドキュメント
https://golang.org/doc/
公式外パッケージドキュメント
https://godoc.org
ブラウザ上で試し書き
https://play.golang.org
※前スレ
Go language part 5
https://mevius.5ch.net/test/read.cgi/tech/1645915400/
探検
Go language part 6
2025/05/20(火) 23:10:28.20ID:C5OyrGcX
2025/06/15(日) 05:43:13.21ID:8ok6jSUv
Goが5倍も遅いのはなぜ?
まともなベンチに見えない
まともなベンチに見えない
2025/06/15(日) 06:29:15.12ID:gNMJii7n
まともなベンチマークでGC言語が速い例は存在しないからね
2025/06/15(日) 06:46:13.05ID:757F+le4
>>41
> 手動で解放があることを前提とした前処理
とは何ぞ?
仕様的に、何もしなくていいと分かりきってるのなら、本当に何もしないCがどう考えても一番速い
多分お前が言ってるのは、「GCヒープに対して、手動で開放があるオブジェクトを割り当てる場合、『前処理が必要になる』」ということなのだろうが、
それはVC++のように、マネージドヒープ(=GCされるヒープ=CLR側のヒープ)と
アンマネージドヒープ(GCされないヒープ=C++側のヒープ)を明示的に分離してしまえば、実行時の『前処理』等のコストは不要となる
> 手動で解放があることを前提とした前処理
とは何ぞ?
仕様的に、何もしなくていいと分かりきってるのなら、本当に何もしないCがどう考えても一番速い
多分お前が言ってるのは、「GCヒープに対して、手動で開放があるオブジェクトを割り当てる場合、『前処理が必要になる』」ということなのだろうが、
それはVC++のように、マネージドヒープ(=GCされるヒープ=CLR側のヒープ)と
アンマネージドヒープ(GCされないヒープ=C++側のヒープ)を明示的に分離してしまえば、実行時の『前処理』等のコストは不要となる
2025/06/15(日) 08:34:30.23ID:757F+le4
>>41
ところでGoは生ポなのでコンパクションは出来ないだろ
コンパクションありのGCは、フラグメンテーションを気にする必要がないので、割り当て自体は速いが、
**pになるのでpのアクセスが無駄に遅くなる
対してコンパクション無しのGCは、最低限サイズ毎の分別は必要なので、割り当て自体は多少遅くなるが、
*pでアクセス出来るので、使用時はCと同速度になる
だから、GCと一括りはまずくて、
コンパクション無しのGC: Go
コンパクションありのGC: C#/Java、多分その他もほぼこっち
と別扱いにしないといけないと思うが
この意味では、「割り当てるだけ割り当てたけど使いませんでした」なオブジェクトが多い場合(=割と糞コード)は他GC言語と比べてGoは比較的遅くなる
例えば、ディープコピーして一部だけ変更し、他の部分はほぼ使わず破棄とか
それ以外の場合はGoの方が速いはず
ところでGoは生ポなのでコンパクションは出来ないだろ
コンパクションありのGCは、フラグメンテーションを気にする必要がないので、割り当て自体は速いが、
**pになるのでpのアクセスが無駄に遅くなる
対してコンパクション無しのGCは、最低限サイズ毎の分別は必要なので、割り当て自体は多少遅くなるが、
*pでアクセス出来るので、使用時はCと同速度になる
だから、GCと一括りはまずくて、
コンパクション無しのGC: Go
コンパクションありのGC: C#/Java、多分その他もほぼこっち
と別扱いにしないといけないと思うが
この意味では、「割り当てるだけ割り当てたけど使いませんでした」なオブジェクトが多い場合(=割と糞コード)は他GC言語と比べてGoは比較的遅くなる
例えば、ディープコピーして一部だけ変更し、他の部分はほぼ使わず破棄とか
それ以外の場合はGoの方が速いはず
2025/06/15(日) 09:11:35.32ID:vsQD4t+X
RustもGoも詳しくないけど、これらの言語にもRails や Django みたいなフルスタックのフレームワークってあるの?
2025/06/15(日) 10:28:32.52ID:ujM9EzWd
2025/06/15(日) 11:42:31.83ID:757F+le4
>>52
> GCのコンパクションは移動対象となるオブジェクトに対する全てのオブジェクト参照のアドレスを直接更新する
それはそれで凄いが、
それだとコピーの際に「参照カウンタ+1」のみならず「コピー先アドレスも控えておく」必要があるので、コピーが重くなる
だから結局、GC方式が異なるので一緒くたには出来ないのは変わらない
まあ各者でそれぞれ一番速いと思ってる方式を採用してはいるのだろうけどね
> GCのコンパクションは移動対象となるオブジェクトに対する全てのオブジェクト参照のアドレスを直接更新する
それはそれで凄いが、
それだとコピーの際に「参照カウンタ+1」のみならず「コピー先アドレスも控えておく」必要があるので、コピーが重くなる
だから結局、GC方式が異なるので一緒くたには出来ないのは変わらない
まあ各者でそれぞれ一番速いと思ってる方式を採用してはいるのだろうけどね
2025/06/15(日) 12:31:52.55ID:aUao3Hkb
2025/06/15(日) 12:43:40.73ID:HdrNQych
2025/06/15(日) 13:57:26.71ID:nsaCurRA
ワッチョイの無いスレでRustの話するとすぐこれだ
2025/06/15(日) 17:27:15.63ID:dAJ+nMeh
2025/06/15(日) 18:20:07.09ID:lEreEG4E
2025/06/15(日) 18:48:04.01ID:/MYgDLVa
アリーナ使うと管理が楽になるのは事実
ライフタイムが統一されてめちゃ楽
ライフタイムが統一されてめちゃ楽
2025/06/15(日) 21:07:20.22ID:vsQD4t+X
それはRust特有の事情でしかなくない?
2025/06/15(日) 21:27:39.74ID:neMcJSIx
同じ
arenaはownerを一本化できるためshared_ptrやRc管理をなくせて楽
arenaはownerを一本化できるためshared_ptrやRc管理をなくせて楽
2025/06/15(日) 23:28:01.42ID:woCxiWNy
2025/06/15(日) 23:38:51.16ID:LkTvbUTI
C++とRustにとってはArenaを使うと管理が楽で高速化されて良いこと尽くし
Goは手間増大か
Goは手間増大か
2025/06/16(月) 01:19:26.26ID:vcrz/bj1
>>49
mallocひとつとっても解放のために確保時点でヘッダーを構成しないといけない
それに根っこから染み付いてて意識してないだろうが、きちんと後で解放できるような構造を取らなくていいならできる最適化は意外と多い
mallocひとつとっても解放のために確保時点でヘッダーを構成しないといけない
それに根っこから染み付いてて意識してないだろうが、きちんと後で解放できるような構造を取らなくていいならできる最適化は意外と多い
2025/06/16(月) 07:43:44.87ID:ZGVdfSpP
>>64
まず俺は40ではない(そしてGo使いでもない)
> mallocひとつとっても解放のために確保時点でヘッダーを構成しないといけない
最低限空き領域リンクリストを構成する必要があるが、
遅いのはヘッダ整備O(1)ではなく、空き領域スキャンO(n)だと思う(が、まあこれはいい)
> C言語でも同タイプの用途には特化したプールを用意して一切解放を行わない最適化戦略は行われる (41)
OOPは各オブジェクト毎にちまちまmalloc/freeしてるから遅い
プールの場合にはこれが1回で済む、ここまではいい
そして
> それに根っこから染み付いてて意識してないだろうが、きちんと後で解放できるような構造を取らなくていいならできる最適化は意外と多い
とは具体的に何?
プールだと確保/開放1回分のコストになるので、これ以上速くするにはallocaくらいしか無いと思うが
(まあ俺はalloca賛成派だし、何ならmalloc禁止でallocaだけで組めとも思うが)
まず俺は40ではない(そしてGo使いでもない)
> mallocひとつとっても解放のために確保時点でヘッダーを構成しないといけない
最低限空き領域リンクリストを構成する必要があるが、
遅いのはヘッダ整備O(1)ではなく、空き領域スキャンO(n)だと思う(が、まあこれはいい)
> C言語でも同タイプの用途には特化したプールを用意して一切解放を行わない最適化戦略は行われる (41)
OOPは各オブジェクト毎にちまちまmalloc/freeしてるから遅い
プールの場合にはこれが1回で済む、ここまではいい
そして
> それに根っこから染み付いてて意識してないだろうが、きちんと後で解放できるような構造を取らなくていいならできる最適化は意外と多い
とは具体的に何?
プールだと確保/開放1回分のコストになるので、これ以上速くするにはallocaくらいしか無いと思うが
(まあ俺はalloca賛成派だし、何ならmalloc禁止でallocaだけで組めとも思うが)
2025/06/16(月) 09:14:01.69ID:ZCbjnjWl
2025/06/16(月) 20:51:33.51ID:GI5I1Imf
>そしてGo使いでもない
なんでこのスレを覗いてるんですかね…?
なんでこのスレを覗いてるんですかね…?
2025/06/16(月) 21:29:49.53ID:ZGVdfSpP
>>67
お前みたいな馬鹿ではないから
お前みたいな馬鹿ではないから
2025/07/14(月) 16:18:19.14ID:ScqQ9XOL
>>67
使ってない言語見てもいいだろうに。
使ってない言語見てもいいだろうに。
70デフォルトの名無しさん
2025/07/25(金) 02:43:51.32ID:STYBTcxW >>67
現実では誰も相手にしてくれない嫌われてるおじだからどこにでも顔突っ込んで荒らすのかわいい街の寂しい存在www
現実では誰も相手にしてくれない嫌われてるおじだからどこにでも顔突っ込んで荒らすのかわいい街の寂しい存在www
71デフォルトの名無しさん
2025/11/02(日) 14:59:56.69ID:kxQN3KLf goが言語年収ランキングで上位だけどなんでなんだろう
72デフォルトの名無しさん
2025/11/02(日) 15:00:46.79ID:kxQN3KLf てかなんでdockerてgoで作ろうと思ったんやろう
73デフォルトの名無しさん
2025/11/03(月) 10:08:44.01ID:3zDb1MP2 >>71
「Goを使うと年収が上がる」ではなく、「年収の高い組織においてGoが使われてる」ということだと思うよ
Goを最も使ってる組織は Google だから Google 社員の給料に引っ張られるみたいな話
「Goを使うと年収が上がる」ではなく、「年収の高い組織においてGoが使われてる」ということだと思うよ
Goを最も使ってる組織は Google だから Google 社員の給料に引っ張られるみたいな話
レスを投稿する
ニュース
- 【制服】中高生の「制服代」が中1は約8000円、高1は約1万円上昇…授業料無償でも重い「教育費の家計負担」とどう向き合えばいい? [少考さん★]
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★8 [nita★]
- EU、エンジン車禁止見直しへ 35年以降も条件付き販売容認―日本勢に追い風 [蚤の市★]
- 中国国防省が再反論 SNSで公開した音声とは“別の通報”で日本に訓練の時間や海域を通報したと主張★4 [夜のけいちゃん★]
- 【ドアノブ外れ】東京・赤坂の“個室サウナ店夫婦死亡火災” 非常用ボタンの電源が切れていた可能性 [nita★]
- 「机の裏に変なものがくっついてる!」「ほんとだね(カメラ回収)」→6日後に男性教員(40)を逮捕「10年以上前から女児盗撮繰り返した」 [Hitzeschleier★]
- にゅって言うほど売れてないのに人気です!ってやってるじゃん?
- 【悲報】日本政府「助けて!MicrosoftにIEモード切られて公文書が表示できないの!😭」 [481941988]
- 電車でこっち側を向いて立ってくるヤツ
- 🏡👊😅👊なにここ珍百景👊😅👊🏡
- 嫁が俺を嫌いな理由
- 緊急事態だ🚨
