/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 security/bench.cs

  • Committer: Suren A. Chilingaryan
  • Date: 2009-10-08 03:17:59 UTC
  • Revision ID: csa@dside.dyndns.org-20091008031759-u5ys779huye7feni
LibXML Pull Parser, FAXPP Parser, Mono security benchmark, multiple fixes

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 schema_file;
 
8
    public string schema_location;
 
9
    
 
10
    public void Bench(string[] args) {
 
11
        if (args.Length<2) {
 
12
            Console.WriteLine("Usage:\n\tme <iterations> <xml file|xmlgen|opcgen|xmark> [size|schema] [schema_location]");
 
13
        }
 
14
 
 
15
        int iterations = Convert.ToInt32(args[0]);
 
16
        
 
17
        bool mode;
 
18
        if ((args[1] == "xmlgen")||(args[1] == "opcgen")||(args[1] == "xmark")) {
 
19
            mode = true;
 
20
        } else {
 
21
            mode = false;
 
22
        }
 
23
        
 
24
        DateTime pre, post;
 
25
        TimeSpan te = new TimeSpan(0);
 
26
        TimeSpan ts = new TimeSpan(0);
 
27
        Disp de = new Disp();
 
28
        Disp ds = new Disp();
 
29
        
 
30
        InitXML();
 
31
        InitXML_Security();
 
32
        
 
33
        FileStream xml;
 
34
        
 
35
        if (mode) xml = new FileStream("../xml.tmp/0.xml", FileMode.Open);
 
36
        else xml = new FileStream(args[1], FileMode.Open);
 
37
        
 
38
        ParseXML(xml, iterations, 0);
 
39
        EncryptXML(xml, iterations, 0);
 
40
        DecryptXML(xml, iterations, 0);
 
41
        SignXML(xml, iterations, 0);
 
42
        VerifyXML(xml, iterations, 0);
 
43
        
 
44
        xml.Close();
 
45
        
 
46
        for (int i = 0; i < iterations; i++) {
 
47
            if (mode) xml = new FileStream("../xml.tmp/" + (i+1) + ".xml", FileMode.Open);
 
48
            else xml = new FileStream(args[1], FileMode.Open);
 
49
            
 
50
            ParseXML(xml, iterations, 0);
 
51
 
 
52
            pre = DateTime.Now;
 
53
            EncryptXML(xml, iterations, 0);
 
54
            DecryptXML(xml, iterations, 0);
 
55
            post = DateTime.Now;
 
56
            de.disp_event((post - pre).TotalMilliseconds);
 
57
            te += post - pre;
 
58
 
 
59
            pre = DateTime.Now;
 
60
            SignXML(xml, iterations, 0);
 
61
            VerifyXML(xml, iterations, 0);
 
62
            post = DateTime.Now;
 
63
            ds.disp_event((post - pre).TotalMilliseconds);
 
64
            ts += post - pre;
 
65
            
 
66
            xml.Close();
 
67
            
 
68
 
 
69
        }
 
70
        de.disp_post();
 
71
        ds.disp_post();
 
72
        
 
73
        ReleaseXML();
 
74
        
 
75
        if (args[1] == "opcgen") {
 
76
            Console.WriteLine("Mono Encryption Time: " + te.TotalMilliseconds + " ms");
 
77
            Console.WriteLine("Mono Signature Time: " + ts.TotalMilliseconds + " ms");
 
78
        } else {
 
79
            Console.WriteLine("Mono Encryption Time: " + (te.TotalMilliseconds/iterations) + "(" + (300*(de.disp_d)/(de.disp_m)) + "%)");
 
80
            Console.WriteLine("Mono Signature Time: " + (ts.TotalMilliseconds/iterations) + "(" + (300*(ds.disp_d)/(ds.disp_m)) + "%)");
 
81
        }
 
82
    }
 
83
    virtual public void InitXML() {}
 
84
    virtual public void InitXML_Security() {}
 
85
    virtual public void ReleaseXML() {}
 
86
    abstract public void ParseXML(Stream xml, int iters, int iter);
 
87
    abstract public void SignXML(Stream xml, int iters, int iter);
 
88
    abstract public void VerifyXML(Stream xml, int iters, int iter);
 
89
    abstract public void EncryptXML(Stream xml, int iters, int iter);
 
90
    abstract public void DecryptXML(Stream xml, int iters, int iter);
 
91
 }
 
92
}