1
変数@countが10未満の場合、ストリームに0の配列を書き込む方が全体的なパフォーマンスによってより好ましいですか?私は最初のメソッドでは、アロケータとガベージコレクタの過剰な負荷が心配です。一方、.netで短命のオブジェクトを作成するには、大幅に最適化する必要があります。複数の短命オブジェクトの作成
void Main()
{
using(var ms = new MemoryStream()){
Method1(ms, 5);
Method2(ms, 5);
}
}
void Method1(MemoryStream ms, int count){
ms.Write(new byte[count], 0, count);
}
static byte[] PreallocatedBuffer = new byte[1024];
void Method2(MemoryStream ms, int count){
ms.Write(PreallocatedBuffer, 0, count);
}
https://ericlippert.com/2012/12/17/performance-rant/、http://james.newtonking.com/archive/2015/12/20/json-net-8- 0-release-1-allocation-and-bug-fixes、http://stackoverflow.com/questions/7086484/in-a-loop-should-i-reuse-a-single-class-instance-or-create- new-ones – CodeCaster
私はすべてのボトルネックを解消しましたが、プログラムには永久的なメモリ割り当てがたくさんあります。ここに問題があります。私はプロファイリングの技術を知らないが、合成テストを行うことは意味がない。したがって、私はメモリの大規模な割り当てでドットネットの物事の一般的な状態を知ることに興味があります。 リンクのおかげで、それは私の役に立つだろう。 – IPShuvaev
_ "私は問題がどこにあるのか正確に言うことはできません" _まだ問題は見られませんでした。 –