我有一个asp.net程序,在开发环境运行良好,但在某个客户处性能很差跟踪发现是用xslt解析xml时,花了太长时间。我们开发环境是 winxp pro + iis5.0 + .net 1.1
客户的运行环境 win2003 + iis6.0 + .net 1.1相同的数据量:xml中大约有4000条记录
开发环境运行时间:40秒
客户环境运行时间:70分种性能相差太大,客户的服务器是双核CPU 内存2G
运行时,w3wp进程,有一个cpu的占用率在90%以上,另一个很低不到10%,占用内存一直不超过128M开发环境运行时,cpu占用100%但并不是所有客户都存在这个问题,只是某一个客户。
有谁遇到过类似情况?我还有一个相同的贴子发在IIS版,如果解决,两贴一起结
客户的运行环境 win2003 + iis6.0 + .net 1.1相同的数据量:xml中大约有4000条记录
开发环境运行时间:40秒
客户环境运行时间:70分种性能相差太大,客户的服务器是双核CPU 内存2G
运行时,w3wp进程,有一个cpu的占用率在90%以上,另一个很低不到10%,占用内存一直不超过128M开发环境运行时,cpu占用100%但并不是所有客户都存在这个问题,只是某一个客户。
有谁遇到过类似情况?我还有一个相同的贴子发在IIS版,如果解决,两贴一起结
解决方案 »
- linq数据访问全部调用存储过程的效率如何
- jqueys 求救
- 用asp.net编写一个小型门户网站
- asp.net如何从数据库中读取数据生成自定义的XML文件!高分请教?
- 数据延迟的问题
- vs2005在使用sqldatasource时,如何获得某个表里的记录总数?
- ASP.NET(C#)框架结构中点击一个页面中的超级链接,该框架中的另外两个页面如何刷新?
- 怎样取用户控件中的DropDownList值?
- 今天问了很多空间商,都不清楚支不支持服务器能返回Last-Modified或Content-Length其中一项??
- 怎样设置asp.net某控件title属性文本的颜色?
- 怎么样才能让页面的高度始终是100% VS2005
- 是否可以将我写的这个过程,放到公共模块中?
提高xslt的性能还是有很多方法的,比如可以适当的使用缓存,减少执行创建、解析、销毁的次数;对比一下哪种技术更优, 可供选择的技术和组件还是有一些的;转换格式上减少转换节点,多增加属性等等.
我们用的是XmlDataDocument
xslTran.Transform(xmlDataDoc, xslArgList, writer);
我想你的意思是说用XPathDocument会比其它document快些.
但是我的开发环境与客户环境的程序和数据都是一样的,性能却相差太多。会不会是其它什么原因?
<?xml-stylesheet type='text/xsl' href='/expert/Xsl/2.xsl'?>这个就是传说中的减少服务器压力?还有一种是通过.NET下的XslTransform来加载解析。这样的解决结果占用了大量的CPU时间。数据量大了就会CPU占用100% .但是这种方法扩展性太好了。什么外部调用。参数传递。楼主自己看着办。随便测试测试第一种方法。然后告诉我性能如何:)
http://support.microsoft.com/kb/325689/EN-US/INFO: .NET Framework 中 XSLT 转换之性能
http://support.microsoft.com/kb/325689/zh-cn
在.net framework上来做, 很费劲用客户机IE的msxml解析器来转换, 这样会好点
就像SVG(ben) 说的 DOM一次性将4000多的记录LOAD入内存,铁定要慢死
而且随着客户的需求增长,我的程序所要处理的xml的规模变得越来越大,有超过60万记录。一个文件要在500M左右。用以前的模式是不可以的。
所以用以下方式处理:
我要处理的文件是别的应用程序export出来的,它的格式不是标准的xml,它有两个root,以前数据量小的时候,我都是给文件处面再套一个root,再放进document里。
现在给一个500M的文件套一个root,花费太大。而且也不能将它放进xmldocument里,不然会报outofmemory.
现在的处理方式是用XmlReader来读取这个文件,读一部分现(比如100条记录),就把这一部分放到一个小的document里,用xslt处理,再读再处理。但客户的机器为什么会比我们开发环境慢很多的问题还是没搞清,由于各种原因没有办法到客户的机器上去做试验。所以只能给他们一个新的升级包来解决了。