私はoption
の利点をよく理解していますが、この場合パフォーマンス上の理由からoption
を使用しないでください。 option
はクラス内の型をラップします。これはガベージコレクタのためのより多くの作業を意味するだけであり、私はそれを避けたいと考えています。F#タイプのフィールドをヌルにする
この場合、同じ状況下ではすべてSome
の複数のフィールドがありますが、タプルがクラスであり、GCに追加のストレスがかかるため、タプルに入れたくありません。だから私はにアクセスしてしまいます。これはoption
の目的を破ります。
option
の型がnullの可能性のある参照として扱われることがわかっていない最適化がない場合は、null
を使用します。私はそれをすることができる方法はありますか?
編集:私がやっていることを拡張するために、私はbounding volume hierarchyを作成しています。これは実際にはリーフノードでのみデータを持つバイナリツリーです。アイテムを不変に保つことはパフォーマンス上の理由からオプションではなく、差別化されたユニオンはmutable
のメンバーを持つことはできません。ref
秒 - GCの圧力に加えて、これをもう一度、差別化されたユニオンとしてではなくクラスとして実装します。
機能的な言葉で言えばばかげて、Node
親タイプの継承として各ノードタイプをやり遂げることになるかもしれません。 Downcastingは正確には最速の操作ではありませんが、XNAとWP7に関する限り、GCを怒らせるよりも何かが優れています。
あなたのケースでは、 – svick
@svickはい、残念ながら、それはXNAゲームの衝突検出用です。つまり、最終的にWP7またはXbox 360で実行されていて、いずれも1世代のGCを搭載している可能性があります。 –
"と表示され、GCにさらに負荷がかかります。 - これを測定しましたか? –