@@ -10,23 +10,165 @@ largeStr += largeStr
1010var bb = ByteBuffer . allocate ( 1024 ) ;
1111var max = 10 ;
1212
13+ // putRawString
14+
1315bb . putRawString ( makeStr ( 'a' , 200 ) ) ;
14- console . log ( 'small bytes %s' , bb . array ( ) . length ) ;
16+ console . log ( 'putRawString: small < 0x80 bytes %s, one char length: %d' ,
17+ bb . array ( ) . length , 'a' . length ) ;
18+ bb . reset ( ) ;
19+
20+ bb . putRawString ( makeStr ( 'ȅ' , 200 ) ) ;
21+ console . log ( 'putRawString: small < 0x800 bytes %s, one char length: %d' ,
22+ bb . array ( ) . length , 'ȅ' . length ) ;
23+ bb . reset ( ) ;
24+
25+ bb . putRawString ( makeStr ( '𐐀' , 200 ) ) ;
26+ console . log ( 'putRawString: small >= 0x800 bytes %s, one char length: %d, maxIncreaseSize: %d, bb.size: %d' ,
27+ bb . array ( ) . length , '𐐀' . length , makeStr ( '𐐀' , 200 ) . length * 3 , bb . _size ) ;
28+ bb . reset ( ) ;
29+
30+ bb . putRawString ( makeStr ( String . fromCharCode ( 0x801 ) , 200 ) ) ;
31+ console . log ( 'putRawString: small = 0x801 bytes %s, one char length: %d' ,
32+ bb . array ( ) . length , String . fromCharCode ( 0x801 ) . length ) ;
33+ bb . reset ( ) ;
34+
35+ bb . putRawString ( makeStr ( '中文' , 200 ) ) ;
36+ console . log ( 'putRawString: small 中文 bytes %s, one char length: %d, maxIncreaseSize: %d, bb.size: %d' ,
37+ bb . array ( ) . length , '中文' . length , makeStr ( '中文' , 200 ) . length * 3 , bb . _size ) ;
38+ bb . reset ( ) ;
39+
40+ bb . putRawString ( makeStr ( '\ud83c\udf3c' , 200 ) ) ;
41+ console . log ( 'putRawString: small \ud83c\udf3c bytes %s, one char length: %d, maxIncreaseSize: %d, bb.size: %d' ,
42+ bb . array ( ) . length , '\ud83c\udf3c' . length , makeStr ( '\ud83c\udf3c' , 200 ) . length * 3 , bb . _size ) ;
1543bb . reset ( ) ;
1644
1745bb . putRawString ( makeStr ( largeStr , 10 ) ) ;
18- console . log ( 'large bytes %s' , bb . array ( ) . length ) ;
46+ console . log ( 'putRawString: large bytes %s, one char length: %d' ,
47+ bb . array ( ) . length ) ;
1948bb . reset ( ) ;
2049
50+ // putUTF8RawString
51+
52+ bb = ByteBuffer . allocate ( 2 ) ;
53+ bb . putUTF8RawString ( makeStr ( 'a' , 200 ) ) ;
54+ console . log ( 'putUTF8RawString: small < 0x80 bytes %s, one char length: %d' ,
55+ bb . array ( ) . length , 'a' . length ) ;
56+ bb . reset ( ) ;
57+
58+ bb . putUTF8RawString ( makeStr ( 'ȅ' , 200 ) ) ;
59+ console . log ( 'putUTF8RawString: small < 0x800 bytes %s, one char length: %d' ,
60+ bb . array ( ) . length , 'ȅ' . length ) ;
61+ bb . reset ( ) ;
62+
63+ bb . putUTF8RawString ( makeStr ( '𐐀' , 200 ) ) ;
64+ console . log ( 'putUTF8RawString: small >= 0x800 bytes %s, one char length: %d, byteLength: %d, bb.size: %d' ,
65+ bb . array ( ) . length , '𐐀' . length , Buffer . byteLength ( makeStr ( '𐐀' , 200 ) ) , bb . _size ) ;
66+ bb . reset ( ) ;
67+
68+ bb . putUTF8RawString ( makeStr ( '中文' , 200 ) ) ;
69+ console . log ( 'putUTF8RawString: small 中文 bytes %s, one char length: %d, byteLength: %d, bb.size: %d' ,
70+ bb . array ( ) . length , '中文' . length , Buffer . byteLength ( makeStr ( '中文' , 200 ) ) , bb . _size ) ;
71+ bb . reset ( ) ;
72+
73+ bb . putUTF8RawString ( makeStr ( '\ud83c\udf3c' , 200 ) ) ;
74+ console . log ( 'putUTF8RawString: small \ud83c\udf3c bytes %s, one char length: %d, byteLength: %d, bb.size: %d' ,
75+ bb . array ( ) . length , '\ud83c\udf3c' . length , Buffer . byteLength ( makeStr ( '\ud83c\udf3c' , 200 ) ) , bb . _size ) ;
76+ bb . reset ( ) ;
77+
78+ bb . putUTF8RawString ( makeStr ( String . fromCharCode ( 0x801 ) , 200 ) ) ;
79+ console . log ( 'putUTF8RawString: small = 0x801 bytes %s, one char length: %d' ,
80+ bb . array ( ) . length , String . fromCharCode ( 0x801 ) . length ) ;
81+ bb . reset ( ) ;
82+
83+ bb . putUTF8RawString ( makeStr ( largeStr , 10 ) ) ;
84+ console . log ( 'putUTF8RawString: large bytes %s, one char length: %d' ,
85+ bb . array ( ) . length ) ;
86+ bb . reset ( ) ;
87+
88+ bb = ByteBuffer . allocate ( 1024 ) ;
89+
2190var run = bench ( [
22- function putRawStringSmall ( cb ) {
91+ function putRawStringSmallLessThan0x80 ( cb ) {
2392 for ( var i = 0 ; i < max ; i ++ ) {
2493 bb . putRawString ( makeStr ( 'a' , 200 ) ) ;
2594 }
2695 bb . array ( ) ;
2796 bb . reset ( ) ;
2897 setImmediate ( cb ) ;
2998 } ,
99+ function putRawStringSmallLessThan0x800 ( cb ) {
100+ for ( var i = 0 ; i < max ; i ++ ) {
101+ bb . putRawString ( makeStr ( 'ȅ' , 200 ) ) ;
102+ }
103+ bb . array ( ) ;
104+ bb . reset ( ) ;
105+ setImmediate ( cb ) ;
106+ } ,
107+ function putRawStringSmallBiggerThan0x800 ( cb ) {
108+ for ( var i = 0 ; i < max ; i ++ ) {
109+ bb . putRawString ( makeStr ( '𐐀' , 200 ) ) ;
110+ }
111+ bb . array ( ) ;
112+ bb . reset ( ) ;
113+ setImmediate ( cb ) ;
114+ } ,
115+ function putRawStringSmallChinese ( cb ) {
116+ for ( var i = 0 ; i < max ; i ++ ) {
117+ bb . putRawString ( makeStr ( '中文' , 200 ) ) ;
118+ }
119+ bb . array ( ) ;
120+ bb . reset ( ) ;
121+ setImmediate ( cb ) ;
122+ } ,
123+ function putRawStringSmallEmoji ( cb ) {
124+ for ( var i = 0 ; i < max ; i ++ ) {
125+ bb . putRawString ( makeStr ( '\ud83c\udf3c' , 200 ) ) ;
126+ }
127+ bb . array ( ) ;
128+ bb . reset ( ) ;
129+ setImmediate ( cb ) ;
130+ } ,
131+
132+ function putUTF8RawStringSmallLessThan0x80 ( cb ) {
133+ for ( var i = 0 ; i < max ; i ++ ) {
134+ bb . putUTF8RawString ( makeStr ( 'a' , 200 ) ) ;
135+ }
136+ bb . array ( ) ;
137+ bb . reset ( ) ;
138+ setImmediate ( cb ) ;
139+ } ,
140+ function putUTF8RawStringSmallLessThan0x800 ( cb ) {
141+ for ( var i = 0 ; i < max ; i ++ ) {
142+ bb . putUTF8RawString ( makeStr ( 'ȅ' , 200 ) ) ;
143+ }
144+ bb . array ( ) ;
145+ bb . reset ( ) ;
146+ setImmediate ( cb ) ;
147+ } ,
148+ function putUTF8RawStringSmallBiggerThan0x800 ( cb ) {
149+ for ( var i = 0 ; i < max ; i ++ ) {
150+ bb . putUTF8RawString ( makeStr ( '𐐀' , 200 ) ) ;
151+ }
152+ bb . array ( ) ;
153+ bb . reset ( ) ;
154+ setImmediate ( cb ) ;
155+ } ,
156+ function putUTF8RawStringSmallChinese ( cb ) {
157+ for ( var i = 0 ; i < max ; i ++ ) {
158+ bb . putUTF8RawString ( makeStr ( '中文' , 200 ) ) ;
159+ }
160+ bb . array ( ) ;
161+ bb . reset ( ) ;
162+ setImmediate ( cb ) ;
163+ } ,
164+ function putUTF8RawStringSmallEmoji ( cb ) {
165+ for ( var i = 0 ; i < max ; i ++ ) {
166+ bb . putUTF8RawString ( makeStr ( '\ud83c\udf3c' , 200 ) ) ;
167+ }
168+ bb . array ( ) ;
169+ bb . reset ( ) ;
170+ setImmediate ( cb ) ;
171+ } ,
30172 // function putRawStringLarge(cb) {
31173 // for (var i = 0; i < max; i++) {
32174 // bb.putRawString(makeStr(largeStr, 10));
0 commit comments