]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/scratch/org/simantics/databoard/tests/StringUTFTest.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / scratch / org / simantics / databoard / tests / StringUTFTest.java
1 package org.simantics.databoard.tests;\r
2 \r
3 import java.io.ByteArrayInputStream;\r
4 import java.io.ByteArrayOutputStream;\r
5 import java.io.DataInputStream;\r
6 import java.io.DataOutputStream;\r
7 import java.nio.charset.Charset;\r
8 \r
9 import org.simantics.databoard.Bindings;\r
10 import org.simantics.databoard.binding.StringBinding;\r
11 \r
12 /**\r
13  *\r
14  * @author Toni Kalajainen <toni.kalajainen@iki.fi>\r
15  */\r
16 public class StringUTFTest {\r
17         \r
18         public static void main(String[] args) throws Exception {\r
19                 \r
20                 StringBinding b = Bindings.STRING;\r
21                 int c = 10000;\r
22                 String[] strs = new String[c];\r
23                 for (int i=0; i<c; i++) strs[i] = (String) b.createRandom(i);\r
24                 \r
25                                 \r
26                 {\r
27                         ByteArrayOutputStream baos = new ByteArrayOutputStream( 10*1024*1024 );\r
28                         DataOutputStream dos = new DataOutputStream( baos );            \r
29                         System.gc();\r
30                         long x = System.nanoTime();\r
31                         for (int i=0; i<c; i++) {\r
32                                 dos.writeUTF(strs[i]);\r
33                         }\r
34                         long y = System.nanoTime() - x;\r
35                         System.out.println("DataOutputStream.writeUTF: "+y);\r
36 \r
37                         byte[] data = baos.toByteArray();\r
38                         DataInputStream dis = new DataInputStream( new ByteArrayInputStream( data ) );\r
39                         x = System.nanoTime();\r
40                         for (int i=0; i<c; i++) {\r
41                                 dis.readUTF();\r
42                         }\r
43                         y = System.nanoTime() - x;\r
44                         System.out.println("DataOutputStream.readUTF : "+y);\r
45                 }\r
46                 \r
47                 {\r
48                         Charset cs = Charset.forName("UTF8");\r
49                         ByteArrayOutputStream baos = new ByteArrayOutputStream( 10*1024*1024 );\r
50                         DataOutputStream dos = new DataOutputStream( baos );            \r
51                         System.gc();\r
52                         long x = System.nanoTime();\r
53                         for (int i=0; i<c; i++) {\r
54                                 byte[] data = strs[i].getBytes(cs);\r
55                                 dos.writeInt(data.length);\r
56                                 dos.write(data);\r
57                         }\r
58                         long y = System.nanoTime() - x;\r
59                         System.out.println("String#getBytes(cs)      : "+y);\r
60 \r
61                         \r
62                         byte[] strData = new byte[1024];\r
63                         byte[] data = baos.toByteArray();\r
64                         DataInputStream dis = new DataInputStream( new ByteArrayInputStream( data ) );\r
65                         x = System.nanoTime();\r
66                         for (int i=0; i<c; i++) {\r
67                                 int len = dis.readInt();\r
68                                 dis.read(strData, 0, len);\r
69                                 new String(strData, cs);\r
70                         }\r
71                         y = System.nanoTime() - x;\r
72                         System.out.println("new String(byte[], cs)   : "+y);\r
73                 }\r
74                 \r
75                 \r
76         }\r
77 \r
78 }\r