/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 create/tango-dom.d

  • Committer: Suren A. Chilingaryan
  • Date: 2009-09-29 02:14:05 UTC
  • Revision ID: csa@dside.dyndns.org-20090929021405-378i2zuuiudt77m1
DOM Creation benchmark for mono and tango

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
module tango_dom;
 
2
 
 
3
//import std.stdio;
 
4
import tango.io.Stdout;
 
5
import tango.text.xml.Document;
 
6
import tango.text.xml.DocPrinter;
 
7
import tango.math.random.Random;
 
8
import tango.text.convert.Integer;
 
9
 
 
10
import tools;
 
11
 
 
12
Random generator;
 
13
DocPrinter!(char) printer;
 
14
char[] nsxsi="http://www.w3.org/2001/XMLSchema-instance";
 
15
char[] nsenc="http://www.w3.org/2001/12/soap-encoding";
 
16
char[] nssoap="http://www.w3.org/2001/12/soap-envelope";
 
17
char[] nsopc="http://opcfoundation.org/webservices/OPCDA/";
 
18
 
 
19
extern(C) void initXML(TestData *td) {
 
20
    generator = new Random();
 
21
//    generator.seed(delegate () { return cast(uint)0; });
 
22
    
 
23
    printer = new DocPrinter!(char);
 
24
//    printer.indent(0);
 
25
}
 
26
 
 
27
extern(C) void releaseXML(TestData *td) {
 
28
}
 
29
extern(C) void parseXML(TestData *td, uint iter) {
 
30
//    char[10] stmp;
 
31
    char[] mem;
 
32
    int i;
 
33
 
 
34
    Document!(char) doc = new Document!(char);
 
35
    doc.Node proot,pnode,node,node1,node2;
 
36
 
 
37
/* Namespace 
 
38
    proot = doc.tree.element(nssoap,"Envelope");
 
39
    proot.attribute(null,"xmlns",nssoap);
 
40
    proot.attribute(null,"xmlns:xsi",nsxsi);
 
41
    proot.attribute(null,"xmlns:enc",nsenc);
 
42
    pnode = proot.element(nssoap,"Body");
 
43
 
 
44
    node=pnode.element(nsopc,"WriteResponse");
 
45
 
 
46
    pnode=node;
 
47
    node=pnode.element(nsopc,"WriteResult");
 
48
    node.attribute(null,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
 
49
    node.attribute(null,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
 
50
    node.attribute(null,"ClientRequestHandle","WriteError");
 
51
    node.attribute(null,"RevisedLocaleID","en");
 
52
    node.attribute(null,"ServerState","running");
 
53
    node1=node.element(nsopc,"RItemList");
 
54
    node=pnode.element(nsopc,"Errors");
 
55
    node.attribute(null,"ID","E_UNKNOWNITEMID");
 
56
    node2=node.element(nsopc,"Text","The item does not exist in the server address space.");
 
57
    node=pnode.element(nsopc,"Errors");
 
58
    node.attribute(null,"ID","S_CLAMP");
 
59
    node2=node.element(nsopc,"Text","The value written was accepted but the output was clamped.");
 
60
 
 
61
    pnode=node1;
 
62
    node=pnode.element(nsopc,"Items");
 
63
    node.attribute(null,"ItemPath","");
 
64
    node.attribute(null,"ItemName","WrongItemID1");
 
65
    node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
 
66
    node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
 
67
    node1=node.element(nsopc,"Value");
 
68
    node.attribute(null,"xsi:nil","true");
 
69
 
 
70
    node=pnode.element(nsopc,"Items");
 
71
    node.attribute(null,"ItemPath","");
 
72
    node.attribute(null,"ItemName","WrongItemID2");
 
73
    node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
 
74
    node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
 
75
    node1=node.element(nsopc,"Value");
 
76
    node.attribute(null,"xsi:nil","true");
 
77
 
 
78
    node=pnode.element(nsopc,"Items");
 
79
    node.attribute(null,"ItemPath","/Reals");
 
80
    node.attribute(null,"ItemName","Float1");
 
81
    node.attribute(null,"ValueType","xsd:float");
 
82
    node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
83
    node1=node.element(nsopc,"Value","10.0141414");
 
84
    node.attribute(null,"xsi:type","xsd:float");
 
85
 
 
86
    node=pnode.element(nsopc,"Items");
 
87
    node.attribute(null,"ItemPath","/Reals");
 
88
    node.attribute(null,"ItemName","Float2");
 
89
    node.attribute(null,"ValueType","xsd:float");
 
90
    node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
91
    node.attribute(null,"SuccessID","S_CLAMP");
 
92
    node1=node.element(nsopc,"Value","1.07");
 
93
    node.attribute(null,"xsi:type","xsd:float");
 
94
 
 
95
    for (i=0;i<td.inc;i++) {
 
96
        node=pnode.element(nsopc,"Items");
 
97
        node.attribute(null,"ItemPath","/Integer");
 
98
        node.attribute(null,"ItemName","IntN");
 
99
        node.attribute(null,"ValueType","xsd:int");
 
100
        node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
101
        node.attribute(null,"SuccessID","S_CLAMP");
 
102
        Integer.itoa!(char)(stmp, generator.uniform!(uint));
 
103
        node1=node.element(nsopc,"Value", stmp);
 
104
        node1.attribute(null,"xsi:type","xsd:int");
 
105
    }
 
106
*/
 
107
 
 
108
    proot = doc.tree.element(null,"Envelope");
 
109
    proot.attribute(null,"xmlns",nssoap);
 
110
    proot.attribute(null,"xmlns:xsi",nsxsi);
 
111
    proot.attribute(null,"xmlns:enc",nsenc);
 
112
    proot.attribute(null,"xmlns:opc",nsopc);
 
113
    pnode = proot.element(null,"Body");
 
114
 
 
115
    node=pnode.element(null,"WriteResponse");
 
116
    node.attribute(null,"xmlns",nsopc);
 
117
    
 
118
    pnode=node;
 
119
    node=pnode.element(null,"WriteResult");
 
120
    node.attribute(null,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
 
121
    node.attribute(null,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
 
122
    node.attribute(null,"ClientRequestHandle","WriteError");
 
123
    node.attribute(null,"RevisedLocaleID","en");
 
124
    node.attribute(null,"ServerState","running");
 
125
    node1=node.element(null,"RItemList");
 
126
    node=pnode.element(null,"Errors");
 
127
    node.attribute(null,"ID","E_UNKNOWNITEMID");
 
128
    node2=node.element(null,"Text","The item does not exist in the server address space.");
 
129
    node=pnode.element(null,"Errors");
 
130
    node.attribute(null,"ID","S_CLAMP");
 
131
    node2=node.element(null,"Text","The value written was accepted but the output was clamped.");
 
132
 
 
133
    pnode=node1;
 
134
    node=pnode.element(null,"Items");
 
135
    node.attribute(null,"ItemPath","");
 
136
    node.attribute(null,"ItemName","WrongItemID1");
 
137
    node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
 
138
    node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
 
139
    node1=node.element(null,"Value");
 
140
    node.attribute(null,"xsi:nil","true");
 
141
 
 
142
    node=pnode.element(null,"Items");
 
143
    node.attribute(null,"ItemPath","");
 
144
    node.attribute(null,"ItemName","WrongItemID2");
 
145
    node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
 
146
    node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
 
147
    node1=node.element(null,"Value");
 
148
    node.attribute(null,"xsi:nil","true");
 
149
 
 
150
    node=pnode.element(null,"Items");
 
151
    node.attribute(null,"ItemPath","/Reals");
 
152
    node.attribute(null,"ItemName","Float1");
 
153
    node.attribute(null,"ValueType","xsd:float");
 
154
    node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
155
    node1=node.element(null,"Value","10.0141414");
 
156
    node.attribute(null,"xsi:type","xsd:float");
 
157
 
 
158
    node=pnode.element(null,"Items");
 
159
    node.attribute(null,"ItemPath","/Reals");
 
160
    node.attribute(null,"ItemName","Float2");
 
161
    node.attribute(null,"ValueType","xsd:float");
 
162
    node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
163
    node.attribute(null,"SuccessID","S_CLAMP");
 
164
    node1=node.element(null,"Value","1.07");
 
165
    node.attribute(null,"xsi:type","xsd:float");
 
166
 
 
167
    for (i=0;i<td.inc;i++) {
 
168
        node=pnode.element(null,"Items");
 
169
        node.attribute(null,"ItemPath","/Integer");
 
170
        node.attribute(null,"ItemName","IntN");
 
171
        node.attribute(null,"ValueType","xsd:int");
 
172
        node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
173
        node.attribute(null,"SuccessID","S_CLAMP");
 
174
/*      That doesn't work since stmp is referenced in node.element, not copied
 
175
        Integer.itoa!(char)(stmp, generator.uniform!(uint));
 
176
        node1=node.element(null,"Value", stmp);
 
177
*/
 
178
        node1=node.element(null,"Value", Integer.toString(generator.uniform!(uint)));
 
179
        node1.attribute(null,"xsi:type","xsd:int");
 
180
    }
 
181
 
 
182
    mem = printer.print(doc);
 
183
//    if (!iter) Stdout(mem).newline;
 
184
 
 
185
 
 
186
}
 
187
 
 
188
void main(char[][] args)
 
189
{
 
190
    DTest(args);
 
191
    Stdout("WARNING! Namespaces are not really supported\n");
 
192
}