Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建多个短期对象_C#_.net_Performance - Fatal编程技术网

C# 创建多个短期对象

C# 创建多个短期对象,c#,.net,performance,C#,.net,Performance,如果变量@count小于10,那么向流中写入零数组的哪种方式(从整体性能来看)更可取?我担心第一种方法中分配器和垃圾收集器的负载过大。另一方面,在.net中创建短期对象应该进行大量优化 void Main() { using(var ms = new MemoryStream()){ Method1(ms, 5); Method2(ms, 5); } } void Method1(MemoryStream ms, int count){

如果变量@count小于10,那么向流中写入零数组的哪种方式(从整体性能来看)更可取?我担心第一种方法中分配器和垃圾收集器的负载过大。另一方面,在.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);
}

在某些情况下,您可以调用垃圾回收。本文很好地描述了这些


如果有很多对象突然(而不是周期性地)变得无用(例如:关闭一个大文件),那么手动调用垃圾收集似乎不是一个坏主意

在某些情况下,您可以调用垃圾收集。本文很好地描述了这些


如果有很多对象突然(而不是周期性地)变得无用(例如:关闭一个大文件),那么手动调用垃圾收集似乎不是一个坏主意

,我消除了所有的瓶颈,但是程序有很多永久内存分配,我无法确切说出问题出在哪里。我不知道剖析的艺术,做合成测试是毫无意义的。因此,我感兴趣的是了解具有大量内存分配的dotnet中的一般状态。谢谢你的链接,这对我很有用。”我不能确切地说问题出在哪里“我还没有看到任何问题。在不猜测性能的情况下,以下内容也会起作用:
ms.Position=4;ms.WriteByte(0)我不确定它在多大程度上支持功能。(如果不是从0开始,Position也可以与
+=
一起使用。例如
ms.Position+=count-1;
)@me name,很好,谢谢!,我消除了所有的瓶颈,但是程序有很多永久内存分配,我不能确切地说问题出在哪里。我不知道剖析的艺术,做合成测试是毫无意义的。因此,我感兴趣的是了解具有大量内存分配的dotnet中的一般状态。谢谢你的链接,这对我很有用。”我不能确切地说问题出在哪里“我还没有看到任何问题。在不猜测性能的情况下,以下内容也会起作用:
ms.Position=4;ms.WriteByte(0)我不确定它在多大程度上支持功能。(如果不是从0开始,Position也可以与
+=
一起使用。例如
ms.Position+=count-1;
)@me name,很好,谢谢!