私はあなたがスピードアップ無効化と GCをすることはできません、GCの実装の設計によって信じています。 GCがどのように実行されているかを心配しないでほしいと思うのですが、これはユビキタスのように扱います。あなたのために保護して見守っています...(頭が下がり、拳が空に上がります) ...
個人的には、自分で自己文書化の形式として変数を設定すると、変数をnullに設定することがよくあります。私は宣言し、使用し、その後nullに設定しません - それらがもう必要なくなった直後にnullです。私は明示的に言っています、「私はあなたと正式にやっています...行くでしょう...」
GC化された言語では無効になっていますか?いいえ、GCには役立つのですか?たぶん、確かにわかっていないかもしれませんが、設計上、私は本当にそれを制御することができませんし、今日のこのバージョンまたはそれに関係なく、将来のGC実装は私のコントロールを超えて答えを変える可能性があります。さらに、nullingが最適化されている場合は、それを想像してみてください。コメント
私の足跡に続く次の悪い愚か者に私の意図が明確になったら、 "かもしれない"がGCを時々助けてくれるかもしれません。ほとんどの場合、私はきちんとした感じがします。そして、モンゴはきれいに感じるのが好きです。 :)
私はこれを次のように見ています:プログラミング言語は、他人に意図とアイディアのアイデアを他人に伝えるために存在します。コンパイラは何をすべきかの仕事要求をします。 ) - CPUはあなたが使用した言語、タブ設定、コメント、文体強調、変数名などのようなものを与えることができます - CPUはレジスタとオペコードを知らせるビットストリームに関するものですそして回転させるメモリ位置。コードで書かれた多くのものは、指定した順序でCPUによって消費されるものに変換されません。私たちのC、C++、C#、Lisp、Babel、アセンブラなど、現実よりも理論であり、仕事の記述として書かれています。あなたが見るものは、アセンブラ言語でさえ、あなたが得るものではありません。
私は「不要なもの」(空白行のような)の考え方は、ノイズだけであり、コードを乱雑にしていることを理解しています。それは私のキャリアの初期の私でした。私はそれを完全に得る。この時、私はコードをより明確にする方向に傾いています。私のプログラムに50行もの「ノイズ」を加えているようなものではありません。ここやそこにはいくつかの行があります。
ルールには例外があります。揮発性メモリ、スタティックメモリ、レースコンディション、シングルトン、 "古くなった"データの使用、そしてそのような腐敗のシナリオでは、それは違います:自分のメモリを管理し、メモリがロックされていないためGCの宇宙 - 誰もがそれを理解することを願っています。残りの時間は、GC言語を使用しているため、必要性やパフォーマンスの向上を保証するのではなく、スタイルの問題です。
1日の終わりに、GCの対象となるものとそうでないものとを理解してください。適切に施錠、処分、無効化する。ワックスが入っていて、息を吸う。他のすべてについて私は言う:それが良いと感じたら、それを行う。あなたの走行距離は変わるかもしれません...
+1大きな質問です。コンパイラが課題を完全に最適化する状況を誰かが知っていますか?すなわち、異なる状況下で誰かがMSILを見て、オブジェクトをヌル(またはその欠如)に設定するためのILを指摘している。 –