首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >性能分析: Dispose()在性能分析方面的独占时间最长

性能分析: Dispose()在性能分析方面的独占时间最长
EN

Stack Overflow用户
提问于 2013-01-22 15:00:32
回答 1查看 104关注 0票数 1

我有一个应用程序,导出数据为xml文件使用xsd方案。

它创建了很多小文件。29 or,其中文件的平均大小为0.3MB或10KB。它创建了大约140000个文件。它使用

代码语言:javascript
复制
 Enumerable.Range(1, gs.Count)
             .AsParallel()
             .ForAll

将独立数据保存到文件

使用MS profiler I将执行时间减少到30分钟。它的峰值写入速率高达20Mb/s。

因此,top profiler的最终版本的结果包括:

System.IO.File.Open(string,valuetype System.IO.FileMode) 30,14 % System.IDisposable.Dispose() 22,09% System.Xml.Serialization.XmlSerializer.Serialize(class System.IO.Stream,object) 13,42 %

代码是:

代码语言:javascript
复制
using (Stream streamw = File.Open(fileName, FileMode.Create))
{                  
        formatter.Serialize(streamw, this);                    
}

其中格式化程序是:

代码语言:javascript
复制
static XmlSerializer formatter = new XmlSerializer(typeof(XItemDesc));

所以问题是:

1)分析器的结果是否意味着我已经达到了HDD性能的最大值?

2)行为的目的是在第二行进行处理吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-22 16:27:49

好吧,也许性能瓶颈是由并行造成的。请记住,对HDD的请求不是并行的,它们是排队的。

如果您的文件位于不同的位置、不同的网络共享或不同的物理硬盘上,您可以从并行中获得性能提升。

另外,如果您使用的是.NET 2.0,并且我看到您使用的是using()语法糖,那么您仍然应该调用Dispose()并取消对流的引用,因为使用()是错误的。

如果文件所在的分区是NTFS,那么请考虑NTFS对于小文件的性能缺陷。NTFS performance and large volumes of files and directories

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14453193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档