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
2:用V2的XslTransform类
3:用V1的XslTransform类
下面是用ACT的测试结果
我晕,真不知ms搞什么鬼还是我文挡看错了。
欢迎同行们指正。
按该文章的描述我做了一个性能测试,得到的结果刚好相反,是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
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
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
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搞什么鬼还是我文挡看错了。
欢迎同行们指正。