1 package org.simantics.databoard.tests;
\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
9 import org.simantics.databoard.Bindings;
\r
10 import org.simantics.databoard.binding.StringBinding;
\r
14 * @author Toni Kalajainen <toni.kalajainen@iki.fi>
\r
16 public class StringUTFTest {
\r
18 public static void main(String[] args) throws Exception {
\r
20 StringBinding b = Bindings.STRING;
\r
22 String[] strs = new String[c];
\r
23 for (int i=0; i<c; i++) strs[i] = (String) b.createRandom(i);
\r
27 ByteArrayOutputStream baos = new ByteArrayOutputStream( 10*1024*1024 );
\r
28 DataOutputStream dos = new DataOutputStream( baos );
\r
30 long x = System.nanoTime();
\r
31 for (int i=0; i<c; i++) {
\r
32 dos.writeUTF(strs[i]);
\r
34 long y = System.nanoTime() - x;
\r
35 System.out.println("DataOutputStream.writeUTF: "+y);
\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
43 y = System.nanoTime() - x;
\r
44 System.out.println("DataOutputStream.readUTF : "+y);
\r
48 Charset cs = Charset.forName("UTF8");
\r
49 ByteArrayOutputStream baos = new ByteArrayOutputStream( 10*1024*1024 );
\r
50 DataOutputStream dos = new DataOutputStream( baos );
\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
58 long y = System.nanoTime() - x;
\r
59 System.out.println("String#getBytes(cs) : "+y);
\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
71 y = System.nanoTime() - x;
\r
72 System.out.println("new String(byte[], cs) : "+y);
\r