/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk

« back to all changes in this revision

Viewing changes to xsl/bench.cs

  • Committer: Suren A. Chilingaryan
  • Date: 2009-09-28 23:02:52 UTC
  • Revision ID: csa@dside.dyndns.org-20090928230252-d05nbdkg6q4zvu8i
Mono validation and transformation benchmarks

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
using System;
 
2
using System.IO;
 
3
using System.Xml;
 
4
 
 
5
namespace XMLBench {
 
6
 abstract public class XMLBench {
 
7
    public string xslt_file;
 
8
    
 
9
    public void Bench(string[] args) {
 
10
        if (args.Length<2) {
 
11
            Console.WriteLine("Usage:\n\tme <iterations> <xml file|xmlgen|opcgen|xmark> [size|xsl_file]");
 
12
        }
 
13
 
 
14
        int iterations = Convert.ToInt32(args[0]);
 
15
        
 
16
        bool mode;
 
17
        if ((args[1] == "xmlgen")||(args[1] == "opcgen")||(args[1] == "xmark")) {
 
18
            switch (args[1]) {
 
19
             case "xmlgen":
 
20
                xslt_file = "../xml.files/generated.xsl";
 
21
             break;
 
22
             case "opcgen":
 
23
                xslt_file = "../xml.files/opc.xsl";
 
24
             break;
 
25
             default:
 
26
                xslt_file = args[2];
 
27
             break;
 
28
            }
 
29
            mode = true;
 
30
        } else {
 
31
            mode = false;
 
32
            xslt_file = args[2];
 
33
        }
 
34
        
 
35
        DateTime pre, post;
 
36
        TimeSpan ts = new TimeSpan(0);
 
37
        Disp d = new Disp();
 
38
        
 
39
        InitXML();
 
40
        
 
41
        FileStream xml;
 
42
        
 
43
        if (mode) xml = new FileStream("../xml.tmp/0.xml", FileMode.Open);
 
44
        else xml = new FileStream(args[1], FileMode.Open);
 
45
        
 
46
        ParseXML(xml, iterations, 0);
 
47
        
 
48
        xml.Close();
 
49
        
 
50
        for (int i = 0; i < iterations; i++) {
 
51
            if (mode) xml = new FileStream("../xml.tmp/0.xml", FileMode.Open);
 
52
            else xml = new FileStream(args[1], FileMode.Open);
 
53
            
 
54
            pre = DateTime.Now;
 
55
            ParseXML(xml, iterations, 0);
 
56
            post = DateTime.Now;
 
57
            d.disp_event((post - pre).TotalMilliseconds);
 
58
            
 
59
            xml.Close();
 
60
            
 
61
            ts += post - pre;
 
62
 
 
63
        }
 
64
        d.disp_post();
 
65
 
 
66
        TimeSpan vts = new TimeSpan(0);
 
67
        Disp dv = new Disp();
 
68
 
 
69
        InitXML_Transformation(xslt_file);
 
70
 
 
71
        if (mode) xml = new FileStream("../xml.tmp/0.xml", FileMode.Open);
 
72
        else xml = new FileStream(args[1], FileMode.Open);
 
73
        
 
74
        TransformXML(xml, iterations, 0);
 
75
        
 
76
        xml.Close();
 
77
        
 
78
        for (int i = 0; i < iterations; i++) {
 
79
            if (mode) xml = new FileStream("../xml.tmp/0.xml", FileMode.Open);
 
80
            else xml = new FileStream(args[1], FileMode.Open);
 
81
            
 
82
            pre = DateTime.Now;
 
83
            TransformXML(xml, iterations, 0);
 
84
            post = DateTime.Now;
 
85
            dv.disp_event((post - pre).TotalMilliseconds);
 
86
//          Console.WriteLine((post - pre).TotalMilliseconds);
 
87
            
 
88
            xml.Close();
 
89
            
 
90
            vts += post - pre;
 
91
 
 
92
        }
 
93
        dv.disp_post();
 
94
        
 
95
        ReleaseXML();
 
96
        
 
97
        ts = vts - ts;
 
98
 
 
99
        if (args[1] == "opcgen") {
 
100
            Console.WriteLine("Mono Transformation Time: " + ts.TotalMilliseconds + " ms");
 
101
        } else {
 
102
//          Console.WriteLine("Mono Time: " + ts.TotalMilliseconds/iterations + " ms");
 
103
//          Console.WriteLine("Mono Time: " + (dv.disp_m-d.disp_m) + "(" + (300*(d.disp_d+dv.disp_d)/(dv.disp_m-d.disp_m)) + "%)");
 
104
            Console.WriteLine("Mono Transformation Time: " + (ts.TotalMilliseconds/iterations) + "(" + (300*(d.disp_d+dv.disp_d)/(dv.disp_m-d.disp_m)) + "%)");
 
105
        }
 
106
    }
 
107
    virtual public void InitXML() {}
 
108
    virtual public void InitXML_Transformation(string xslt_file) {}
 
109
    virtual public void ReleaseXML() {}
 
110
    abstract public void ParseXML(Stream xml, int iters, int iter);
 
111
    abstract public void TransformXML(Stream xml, int iters, int iter);
 
112
 }
 
113
}