GUID は完全に一意ではありません: 単純な反証
GUID は一意であるという一般的な信念に疑問が生じています。この記事では、GUID の非一意性を示す簡単な C# プログラムを提供します。また、プログラムの安定性とパフォーマンスを向上させるための改良版が付属しています。
初期手順
最初のプログラムは一連の GUID を反復しようとしますが、このプロセスには長時間かかることが予想されます。ただし、実装が単純なため、期待した結果が得られませんでした。
改良版
この問題を解決するために、プログラムはリファクタリングされました:
プログラムの実行
プログラムはまず、bigHeapOGuid にできるだけ多くの GUID を埋め込み、使用可能なメモリを効果的に使い果たします。次に、スレッドは GUID の生成を開始し、bigHeapOGuid で一致するものを検索します。宇宙がまだ終わっていないと仮定すると、このプロセスは無限に続きます。
潜在的な問題
プログラムは、OutOfMemoryException を利用して、GUID 生成用のメモリがいつ枯渇したかを示します。これは非効率的であると考えられており、予測できない動作を引き起こす可能性があります。
メモリ管理
メモリ管理を改善するために、ガベージ コレクターをより効率的に使用するようにプログラムが更新されました。 GC はメモリの割り当てと割り当て解除を自動的に管理するため、プログラムを無制限に実行できます。
フォローアップ
これらの改善にもかかわらず、プログラムは依然として宇宙がまだ終わっていないと想定しています。宇宙の熱による死が発生した場合、プログラムは正常に終了します。
以上がGUID は本当に一意性を保証できるのでしょうか?実践的なデモンストレーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。