探検


C#が新unsafeでメモリ安全に Rust/Swiftへの言及も

2026/05/25(月) 01:59:44.39ID:nvu762kR
C#の新たな方針がRustの真似

>>1
>> unsafeで定義された関数は、コール元が明示的にunsafeブロックで呼び出す必要があり、適切なドキュメント(/// <safety>ブロック)で安全性の契約や義務が明示される。
>> ポインタ型がシグネチャに含まれるだけでは自動的にunsafeにはせず、実際に危険な操作(例えばデリファレンス)が発生する箇所ごとに明示される形となる。
3デフォルトの名無しさん
垢版 |
2026/05/27(水) 12:45:45.72ID:WCS5U2KA
阿鼻叫喚
2026/05/27(水) 16:08:15.94ID:PZQy1Xr7
Rustの存在意義無くなっちゃったじゃん
2026/05/27(水) 18:53:08.40ID:SBCRghEW
C#はガベージコレクション方式の遅い言語
C/C++/Rustの速さや使用メモリの少なさをC#は実現できない
6デフォルトの名無しさん
垢版 |
2026/05/27(水) 20:51:34.31ID:dSJ8g9Ow
>>4
んなこたーない
7デフォルトの名無しさん
垢版 |
2026/05/30(土) 04:10:51.03ID:OeNHKzAz
関数やブロックにunsafeするだけでいいんだよ
プロジェクトにunsafe許可とか必要ない
もっと気軽にunsafe使わせろ
そもそもポインタごときでunsafeとかダメグラマかよ
8デフォルトの名無しさん
垢版 |
2026/05/30(土) 15:18:51.41ID:5fXXCMxe
c#好きだけど、unsafe使いたいから使ってるわけじゃないんだよなあ
9デフォルトの名無しさん
垢版 |
2026/06/26(金) 15:16:52.82ID:R6afI80t
>>5
プログラミングエアプか?
GCは速いぞ
ChromeはC++で作られてるけど独自のGCを使ってる
Rustが重宝されるのはレイテンシが小さいからだ
2026/06/26(金) 16:42:26.29ID:+1B9IjoT
>>9
GCは遅い
C++でもRustでもメモリ管理はアリーナ方式がベスト
割り当て解放が速く、断片化しないためCPUメモリキャッシングにも有利
11デフォルトの名無しさん
垢版 |
2026/06/26(金) 22:19:01.91ID:R6afI80t
やはりエアプか
2026/06/26(金) 22:24:27.32ID:maA58Mlv
ガベージコレクションは確実に遅くなる
その遅さと引き換えに他のメリットが上回るときに用いられるレアケースがある
滅多にないため通常はガベージコレクションは候補にせずに無視していい
13デフォルトの名無しさん
垢版 |
2026/06/27(土) 00:01:41.06ID:D69zuVLr
逐次解放が速いなんてありえねえしアリーナ使えるのは条件が限られるガベージコレクションこそが一般的で高速なメモリ管理だよ、メモリが十分にあるならGCがされないことだってあるからね遅延させて必要な時だけメモリを解放する、これよりも良い方法は存在しません
14デフォルトの名無しさん
垢版 |
2026/06/27(土) 00:07:39.52ID:D69zuVLr
C#がCなどに比べて遅いのは仮想マシンで実行されるからでメモリの確保を大量にこなす処理はC#の方が速い、マネージメモリをまとめて確保してるからね、手動でやれば速くなるなんてのは幻想よRustもゴミ、以上
2026/06/27(土) 01:48:25.86ID:c7cFpiQD
C#が遅い理由はGCに依存しているため
16デフォルトの名無しさん
垢版 |
2026/06/27(土) 02:00:33.11ID:YqZxmVSt
数字出さずに感想文だけ書くやつは無能
2026/06/27(土) 02:04:32.43ID:ID3kKpvp
>>13
無知すぎる
ガベージコレクションが開始されなくてもガベージコレクション言語が遅い理由をまずは理解すべきだ
2026/06/27(土) 02:15:41.04ID:ZhnlnZJx
メモリが十分にあってGCが発動しなくても、GC言語は各種ベンチマークで、なぜC/C++/Rustに勝てないのか?
その理由は、GC言語はGCできるようにメモリ管理をせざるを得ないためだ。
19デフォルトの名無しさん
垢版 |
2026/06/27(土) 08:40:51.74ID:D69zuVLr
>>16
あなた無能ってことですやんwww
20デフォルトの名無しさん
垢版 |
2026/06/27(土) 14:22:36.42ID:i5PSImc0
それってあなたの感想ですよね
21デフォルトの名無しさん
垢版 |
2026/06/27(土) 18:35:33.80ID:vL0XygNT
>>14
手動とはどういう意味でしょう?

例えばそのRustで構造体のオブジェクトを作るとすると
その値を格納する変数はスタック領域に確保されます
そのメモリ割り当て解放コストは他のローカル変数とまとめてスタックポインタを加算減算するだけでコストは最小
これら自動ですので手動ではありません
22デフォルトの名無しさん
垢版 |
2026/06/27(土) 18:38:11.62ID:vL0XygNT
ではその構造体オブジェクトを作る関数が先ほどの変数>>21へ値を返す時はどうなるでしょうか?
その値が小さければレジスタで返されます
その値が大きければ自動的に先ほどのスタック上の変数のアドレスが関数へ渡されてダイレクトに返す先の変数に値が書き込まれます
このようにオブジェクトの値のやりとりコストも最小
そしてこのオブジェクト作成関数ではオブジェクトのメモリの確保が不要
これらも自動ですので手動はありません
23デフォルトの名無しさん
垢版 |
2026/06/27(土) 18:40:24.54ID:vL0XygNT
最後に変数>>21に格納された構造体オブジェクトの値を用いる他の関数を呼び出す時はどうなるでしょうか?
不変参照(書き換え不可)か可変参照(書き換え可能)を関数へ渡します
先ほどのスタック上の変数のアドレスがレジスタに格納されて関数へ渡されるだけでコスト最小です

以上ここまでメモリの割り当てと解放のコストは最初のオブジェクト格納変数のためのスタックポインタの加算減算しか生じていないです
だから速いのです
レスを投稿する


ニューススポーツなんでも実況