>>614
よく分からないなら職場の先輩に聞いてください。あなたのくだらない煽りに答える所ではありません。
無視しても良かったのですが、あまりにも気持ち悪すぎるので書いておきます
RustのRc、Arcと言っているのに、それにまったく気づかない文章読解能力の無さどうかと思います。
ARC (automatic reference counting) というのアルゴリズムです。
言うまでもなくRcは(reference-counting)です。単純な参照カウントを改良・自動化したのがARCです。
改良すべきは細かい話になりますが、1つ目が値の受け渡しによるコピーをなくすためのムーブ操作です。
理論上は、ムーブセマンティクスと呼ばれる、C++11/14からある所有権のムーブで、メモリーコピーを
防ぎます。これは「所有権」という言葉からRustを想像すると思いますが、まさしくそれでRustはムーブを
明示的にシンタックスで行いますが、VやNimbleなどはそれが自動化されます。strong/weak/unownedの
キーワードが必要になりますが、確かSwiftもARCです。Vの場合はmutが必要です
2番目にスレッド間でのデータが共有されるため、ここも単純なRCと比べて改良されています。
他にもRCに比べて利点があります。多くの単純な例ではオーバーヘッドと見做されるようなカウント操作を
行わないようになります。これは明示的に所有権の移動を行うRustと同じです。Rustの利点はGCが不明な
箇所では行われない事です
簡単に表せば、最も単純な例では関数を抜けた後にメモリ解放を必要とする変数のデストラクタ呼び出しを
コンパイラが自動的に挿入します。(ここでカウント操作はありません)ただ循環参照を処理する場合には
参照カウンターとは別にサイクルカウンターが必要となります。
Rustはunsafeを使わずとも「循環参照は、メモリをリークすることもある」と認めていますが、独自データ
構造で循環参照を作った場合、メモリーリークしないよう保証するのは実装者の自分自身が必要です。
JavaなどのGCがあるとされる言語は多くはこれを解決するために、マークアンドスウィープを使用して結果的に
Stop the Worldが発生します。これを解決して抑えるためコンカレントGCを作りましたが、常にGCされるので
に結果的にパフォーマンス低下します。
探検
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
710デフォルトの名無しさん
2021/03/30(火) 02:28:48.17ID:uKQPYHO8■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 三角形はカッコいい
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- みなみけ三姉妹誰が一番好き?
- 俺はヤンキーだから
- 【速報】高市早苗、起床 [779938112]
- ぬるぽ
