shengsoft

聆听代码的音符

导航

vs2005学习笔记(2):xslt的性能测试

看了msdn上一篇关于xml的文章,What's New in System.Xml for Visual Studio 2005 and the .NET Framework 2.0 Release url:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxml/html/sysxmlVS05.asp,其中有一节讲到性能问题。.
按该文章的描述我做了一个性能测试,得到的结果刚好相反,是V1.1 的xslTransform最快.。
下面是该测试的代码。

1:用V2的 XslCompiledTransform Class

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Xml.XPath;
12using System.Xml.Xsl;
13using System.IO;
14
15public partial class XslCompiledTransformPage : System.Web.UI.Page
16{
17    protected void Page_Load(object sender, EventArgs e)
18    {
19        int start, stop;
20        start = Environment.TickCount;
21
22        string dataPath = Server.MapPath("MenuData.xml");
23        string stylePath = Server.MapPath("MenuBar.xslt");
24
25        XsltArgumentList args = new XsltArgumentList();
26        args.AddParam("pmtPageName""""UseXslCompiledTransform");
27        XslCompiledTransform xslt = new XslCompiledTransform();
28        xslt.Load(stylePath);
29        MemoryStream msm = new MemoryStream();
30        xslt.Transform(new XPathDocument(dataPath), args, msm);
31        msm.Position = 0;
32        StreamReader sr = new StreamReader(msm);
33        string html = sr.ReadToEnd();
34        msm.Close();
35        sr.Close();
36     
37        Response.Write(html);
38
39        stop = Environment.TickCount;
40        int i = stop - start;
41
42        string guid = Guid.NewGuid().ToString();
43        Response.Write(guid + "" + i.ToString());
44
45        Response.End();
46    }

47
48}

49


2:用V2的XslTransform类

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Xml.XPath;
12using System.Xml.Xsl;
13using System.IO;
14public partial class XslTransformPage : System.Web.UI.Page
15{
16    protected void Page_Load(object sender, EventArgs e)
17    {
18        int start, stop;
19        start = Environment.TickCount;
20
21        string dataPath = Server.MapPath("MenuData.xml");
22        string stylePath = Server.MapPath("MenuBar.xslt");
23
24        XsltArgumentList args = new XsltArgumentList();
25        args.AddParam("pmtPageName""""UseXslTransform");
26        XslTransform xslt = new XslTransform();
27        xslt.Load(stylePath);
28        XPathDocument xpathdocument = new XPathDocument(dataPath);
29
30        MemoryStream msm = new MemoryStream();
31        xslt.Transform(xpathdocument, args, msm, null);
32        msm.Position = 0;
33
34        StreamReader sr = new StreamReader(msm);
35
36        string html = sr.ReadToEnd();
37        msm.Close();
38        sr.Close();
39        Response.Write(html);
40
41        stop = Environment.TickCount;
42        int i = stop - start;
43        string guid = Guid.NewGuid().ToString();
44        Response.Write(guid + "" + i.ToString());
45
46        Response.End();
47    }

48}

49


3:用V1的XslTransform类

 1using System;
 2using System.Collections;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Web;
 7using System.Web.SessionState;
 8using System.Web.UI;
 9using System.Web.UI.WebControls;
10using System.Web.UI.HtmlControls;
11using System.Xml;
12using System.Xml.XPath;
13using System.Xml.Xsl;
14using System.IO;
15namespace WebApplication1
16{
17    /// <summary>
18    /// WebForm1 的摘要说明。
19    /// </summary>

20    public class WebForm1 : System.Web.UI.Page
21    {
22        private void Page_Load(object sender, System.EventArgs e)
23        {
24            int start, stop;
25            start = Environment.TickCount;
26
27            string dataPath = Server.MapPath("MenuData.xml");
28            string stylePath = Server.MapPath("MenuBar.xslt");
29            
30            XsltArgumentList args = new XsltArgumentList();
31            args.AddParam("pmtPageName""""UseXslTransform");
32            XslTransform xslt = new XslTransform();
33            xslt.Load(stylePath);
34            XPathDocument xpathdocument = new XPathDocument(dataPath);
35    
36            MemoryStream msm = new MemoryStream();
37            xslt.Transform(xpathdocument, args, msm, null);
38            msm.Position = 0;
39
40            StreamReader sr = new StreamReader(msm);
41
42            string html = sr.ReadToEnd();
43            msm.Close();
44            sr.Close();
45        
46            Response.Write(html);
47
48            stop = Environment.TickCount;
49            int i = stop - start;
50
51            string guid = Guid.NewGuid().ToString();
52            Response.Write(guid + "" + i.ToString());
53
54            Response.End();
55        }

56
57        #region Web 窗体设计器生成的代码
58        override protected void OnInit(EventArgs e)
59        {
60            //
61            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
62            //
63            InitializeComponent();
64            base.OnInit(e);
65        }

66        
67        /// <summary>
68        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
69        /// 此方法的内容。
70        /// </summary>

71        private void InitializeComponent()
72        {    
73            this.Load += new System.EventHandler(this.Page_Load);
74
75        }

76        #endregion

77    }

78}

79


下面是用ACT的测试结果




我晕,真不知ms搞什么鬼还是我文挡看错了。
欢迎同行们指正。

posted on 2005-04-24 05:30  盛国军  阅读(2559)  评论(3编辑  收藏  举报