Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kengao2018
fastjson
提交
0546d845
fastjson
项目概览
kengao2018
/
fastjson
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
fastjson
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0546d845
编写于
1月 20, 2019
作者:
S
shaojin.wensj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fastjson.properties support 'parser.features.ErrorOnEnumNotMatch'
上级
0b9f09be
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
140 addition
and
55 deletion
+140
-55
pom.xml
pom.xml
+1
-1
src/main/java/com/alibaba/fastjson/JSON.java
src/main/java/com/alibaba/fastjson/JSON.java
+6
-0
src/test/java/com/alibaba/json/bvt/issue_2200/Issue2206.java
src/test/java/com/alibaba/json/bvt/issue_2200/Issue2206.java
+0
-1
src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumTest.java
.../java/com/alibaba/json/bvt/serializer/enum_/EnumTest.java
+9
-0
src/test/java/com/alibaba/json/bvt/serializer/filters/ContextValueClassLevelTest.java
...on/bvt/serializer/filters/ContextValueClassLevelTest.java
+0
-2
src/test/java/com/alibaba/json/bvt/util/UTF8DecoderTest.java
src/test/java/com/alibaba/json/bvt/util/UTF8DecoderTest.java
+25
-0
src/test/java/com/alibaba/json/test/A1.java
src/test/java/com/alibaba/json/test/A1.java
+31
-0
src/test/java/com/alibaba/json/test/Base64.java
src/test/java/com/alibaba/json/test/Base64.java
+24
-24
src/test/java/com/alibaba/json/test/UTF8Test.java
src/test/java/com/alibaba/json/test/UTF8Test.java
+11
-9
src/test/java/com/alibaba/json/test/UTF8Test_decode.java
src/test/java/com/alibaba/json/test/UTF8Test_decode.java
+2
-2
src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain.java
...t/java/com/alibaba/json/test/benchmark/BenchmarkMain.java
+6
-2
src/test/java/com/alibaba/json/test/benchmark/JSONPathBenchmarkTest.java
...om/alibaba/json/test/benchmark/JSONPathBenchmarkTest.java
+2
-2
src/test/java/com/alibaba/json/test/benchmark/basic/IntBenchmark.java
...a/com/alibaba/json/test/benchmark/basic/IntBenchmark.java
+3
-2
src/test/java/com/alibaba/json/test/benchmark/jdk10/StringBenchmark_jackson.java
...ba/json/test/benchmark/jdk10/StringBenchmark_jackson.java
+20
-10
未找到文件。
pom.xml
浏览文件 @
0546d845
...
...
@@ -4,7 +4,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.5
5_preview_06
</version>
<version>
1.2.5
6_preview_01
</version>
<packaging>
jar
</packaging>
<name>
fastjson
</name>
...
...
src/main/java/com/alibaba/fastjson/JSON.java
浏览文件 @
0546d845
...
...
@@ -111,6 +111,12 @@ public abstract class JSON implements JSONStreamAware, JSONAware {
DEFAULT_PARSER_FEATURE
|=
Feature
.
NonStringKeyAsString
.
getMask
();
}
}
{
if
(
"true"
.
equals
(
properties
.
getProperty
(
"parser.features.ErrorOnEnumNotMatch"
)))
{
DEFAULT_PARSER_FEATURE
|=
Feature
.
ErrorOnEnumNotMatch
.
getMask
();
}
}
}
/**
...
...
src/test/java/com/alibaba/json/bvt/issue_2200/Issue2206.java
浏览文件 @
0546d845
package
com.alibaba.json.bvt.issue_2200
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.parser.ParserConfig
;
import
junit.framework.TestCase
;
import
java.time.LocalDateTime
;
...
...
src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumTest.java
浏览文件 @
0546d845
...
...
@@ -24,4 +24,13 @@ public class EnumTest extends TestCase {
Assert
.
assertEquals
(
"'Small'"
,
JSON
.
toJSONString
(
Type
.
Small
,
SerializerFeature
.
UseSingleQuotes
));
// "Small"
}
public
void
test_empty
()
throws
Exception
{
Model
model
=
JSON
.
parseObject
(
"{\"type\":\"\"}"
,
Model
.
class
);
assertNull
(
model
.
type
);
}
public
static
class
Model
{
public
Type
type
;
}
}
src/test/java/com/alibaba/json/bvt/serializer/filters/ContextValueClassLevelTest.java
浏览文件 @
0546d845
...
...
@@ -19,7 +19,6 @@ public class ContextValueClassLevelTest extends TestCase {
config
.
addFilter
(
ModelA
.
class
,
//
new
ContextValueFilter
()
{
@Override
public
Object
process
(
BeanContext
context
,
Object
object
,
String
name
,
Object
value
)
{
return
30001
;
}
...
...
@@ -27,7 +26,6 @@ public class ContextValueClassLevelTest extends TestCase {
config
.
addFilter
(
ModelB
.
class
,
//
new
ContextValueFilter
()
{
@Override
public
Object
process
(
BeanContext
context
,
Object
object
,
String
name
,
Object
value
)
{
return
20001
;
}
...
...
src/test/java/com/alibaba/json/bvt/util/UTF8DecoderTest.java
浏览文件 @
0546d845
...
...
@@ -137,4 +137,29 @@ public class UTF8DecoderTest extends TestCase {
}
}
/**
* @deprecated
*/
public
void
test_5
()
throws
Exception
{
UTF8Decoder
decoder
=
new
UTF8Decoder
();
String
str
=
"⌛︎€\uD83D\uDC69\uD83D\uDC68\uD83D\uDC68\uD83C\uDFFB\uD83D\uDC69\uD83C\uDFFFU+1F9D2: Child\tText\t\uD83E\uDDD2\t\uD83E\uDDD2\uD83C\uDFFB\t\uD83E\uDDD2\uD83C\uDFFC\t\uD83E\uDDD2\uD83C\uDFFD\t\uD83E\uDDD2\uD83C\uDFFE\t\uD83E\uDDD2\uD83C\uDFFF\n\uD83E\uDDD1\uD83C\uDFFF\uD83C\uDE1A️\uD83C\uDC04️❤️"
;
byte
[]
bytes
=
str
.
getBytes
(
"UTF-8"
);
ByteBuffer
byteBuffer
=
ByteBuffer
.
wrap
(
bytes
);
decoder
.
decode
(
byteBuffer
);
}
/**
* @deprecated
*/
public
void
test_6
()
throws
Exception
{
UTF8Decoder
decoder
=
new
UTF8Decoder
();
String
str
=
"\u20AC"
;
byte
[]
bytes
=
str
.
getBytes
(
"UTF-8"
);
ByteBuffer
byteBuffer
=
ByteBuffer
.
wrap
(
bytes
);
decoder
.
decode
(
byteBuffer
);
}
}
src/test/java/com/alibaba/json/test/A1.java
浏览文件 @
0546d845
package
com.alibaba.json.test
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
com.alibaba.fastjson.util.IOUtils
;
import
junit.framework.TestCase
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.ObjectInputStream
;
import
java.io.ObjectOutputStream
;
/**
* Created by wenshao on 14/03/2017.
*/
...
...
@@ -13,5 +20,29 @@ public class A1 extends TestCase {
Object
obj
=
JSON
.
parse
(
"[{\"feature\":\"\\u3A56\\u3A26\"}]"
);
String
json
=
JSON
.
toJSONString
(
obj
,
SerializerFeature
.
BrowserCompatible
);
System
.
out
.
println
(
json
);
}
public
void
test_ser
()
throws
Exception
{
// JSONObject obj = new JSONObject();
//
// ByteArrayOutputStream out = new ByteArrayOutputStream();
// ObjectOutputStream objOut = new ObjectOutputStream(out);
// objOut.writeObject(obj);
// objOut.flush();
// objOut.close();
// byte[] bytes = out.toByteArray();
//
// String str = Base64.encodeToString(bytes, false);
// System.out.println(str);
byte
[]
bytes2
=
IOUtils
.
decodeBase64
(
"rO0ABXNyAB9jb20uYWxpYmFiYS5mYXN0anNvbi5KU09OT2JqZWN0AAAAAAAAAAECAAFMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAABB3CAAAABAAAAAAeA=="
);
ByteArrayInputStream
byteIn
=
new
ByteArrayInputStream
(
bytes2
);
ObjectInputStream
objIn
=
new
ObjectInputStream
(
byteIn
);
Object
obj
=
objIn
.
readObject
();
assertEquals
(
JSONObject
.
class
,
obj
.
getClass
());
}
}
src/test/java/com/alibaba/json/test/Base64.java
浏览文件 @
0546d845
...
...
@@ -86,56 +86,56 @@ public class Base64
// ****************************************************************************************
/** Encodes a raw byte array into a BASE64 <code>char[]</code> representation i accordance with RFC 2045.
* @param
sArr
The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.
* @param
bytes
The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.
* @param lineSep Optional "\r\n" after 76 characters, unless end of file.<br>
* No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a
* little faster.
* @return A BASE64 encoded array. Never <code>null</code>.
*/
public
final
static
char
[]
encodeToChar
(
byte
[]
sArr
,
boolean
lineSep
)
public
final
static
char
[]
encodeToChar
(
byte
[]
bytes
,
boolean
lineSep
)
{
// Check special case
int
sLen
=
sArr
!=
null
?
sArr
.
length
:
0
;
if
(
sL
en
==
0
)
int
bytes_len
=
bytes
!=
null
?
bytes
.
length
:
0
;
if
(
bytes_l
en
==
0
)
return
new
char
[
0
];
int
eLen
=
(
sL
en
/
3
)
*
3
;
// Length of even 24-bits.
int
cCnt
=
((
sL
en
-
1
)
/
3
+
1
)
<<
2
;
// Returned character count
int
dL
en
=
cCnt
+
(
lineSep
?
(
cCnt
-
1
)
/
76
<<
1
:
0
);
// Length of returned array
char
[]
dArr
=
new
char
[
dL
en
];
int
eLen
=
(
bytes_l
en
/
3
)
*
3
;
// Length of even 24-bits.
int
cCnt
=
((
bytes_l
en
-
1
)
/
3
+
1
)
<<
2
;
// Returned character count
int
chars_l
en
=
cCnt
+
(
lineSep
?
(
cCnt
-
1
)
/
76
<<
1
:
0
);
// Length of returned array
char
[]
chars
=
new
char
[
chars_l
en
];
// Encode even 24-bits
for
(
int
s
=
0
,
d
=
0
,
cc
=
0
;
s
<
eLen
;)
{
// Copy next three bytes into lower 24 bits of int, paying attension to sign.
int
i
=
(
sArr
[
s
++]
&
0xff
)
<<
16
|
(
sArr
[
s
++]
&
0xff
)
<<
8
|
(
sArr
[
s
++]
&
0xff
);
int
i
=
(
bytes
[
s
++]
&
0xff
)
<<
16
|
(
bytes
[
s
++]
&
0xff
)
<<
8
|
(
bytes
[
s
++]
&
0xff
);
// Encode the int into four chars
dArr
[
d
++]
=
CA
[(
i
>>>
18
)
&
0x3f
];
dArr
[
d
++]
=
CA
[(
i
>>>
12
)
&
0x3f
];
dArr
[
d
++]
=
CA
[(
i
>>>
6
)
&
0x3f
];
dArr
[
d
++]
=
CA
[
i
&
0x3f
];
chars
[
d
++]
=
CA
[(
i
>>>
18
)
&
0x3f
];
chars
[
d
++]
=
CA
[(
i
>>>
12
)
&
0x3f
];
chars
[
d
++]
=
CA
[(
i
>>>
6
)
&
0x3f
];
chars
[
d
++]
=
CA
[
i
&
0x3f
];
// Add optional line separator
if
(
lineSep
&&
++
cc
==
19
&&
d
<
dL
en
-
2
)
{
dArr
[
d
++]
=
'\r'
;
dArr
[
d
++]
=
'\n'
;
if
(
lineSep
&&
++
cc
==
19
&&
d
<
chars_l
en
-
2
)
{
chars
[
d
++]
=
'\r'
;
chars
[
d
++]
=
'\n'
;
cc
=
0
;
}
}
// Pad and encode last bits if source isn't even 24 bits.
int
left
=
sL
en
-
eLen
;
// 0 - 2.
int
left
=
bytes_l
en
-
eLen
;
// 0 - 2.
if
(
left
>
0
)
{
// Prepare the int
int
i
=
((
sArr
[
eLen
]
&
0xff
)
<<
10
)
|
(
left
==
2
?
((
sArr
[
sL
en
-
1
]
&
0xff
)
<<
2
)
:
0
);
int
i
=
((
bytes
[
eLen
]
&
0xff
)
<<
10
)
|
(
left
==
2
?
((
bytes
[
bytes_l
en
-
1
]
&
0xff
)
<<
2
)
:
0
);
// Set last four chars
dArr
[
dL
en
-
4
]
=
CA
[
i
>>
12
];
dArr
[
dL
en
-
3
]
=
CA
[(
i
>>>
6
)
&
0x3f
];
dArr
[
dL
en
-
2
]
=
left
==
2
?
CA
[
i
&
0x3f
]
:
'='
;
dArr
[
dL
en
-
1
]
=
'='
;
chars
[
chars_l
en
-
4
]
=
CA
[
i
>>
12
];
chars
[
chars_l
en
-
3
]
=
CA
[(
i
>>>
6
)
&
0x3f
];
chars
[
chars_l
en
-
2
]
=
left
==
2
?
CA
[
i
&
0x3f
]
:
'='
;
chars
[
chars_l
en
-
1
]
=
'='
;
}
return
dArr
;
return
chars
;
}
/** Decodes a BASE64 encoded char array. All illegal characters will be ignored and can handle both arrays with
...
...
@@ -517,7 +517,7 @@ public class Base64
* @param s The source string. Length 0 will return an empty array. <code>null</code> will throw an exception.
* @return The decoded array of bytes. May be of length 0.
*/
public
final
static
byte
[]
decodeFast
(
String
s
)
public
final
static
byte
[]
de
de
codeFast
(
String
s
)
{
// Check special case
int
sLen
=
s
.
length
();
...
...
src/test/java/com/alibaba/json/test/UTF8Test.java
浏览文件 @
0546d845
...
...
@@ -32,20 +32,22 @@ public class UTF8Test extends TestCase {
public
void
test_encode
()
throws
Exception
{
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
f0
();
}
//
for (int i = 0; i < 5; ++i) {
//
f0();
//
}
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
f1
();
}
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
f2
();
}
//
for (int i = 0; i < 5; ++i) {
//
f2();
//
}
}
final
static
int
COUNT
=
1000
*
1000
*
5
;
private
void
f0
()
throws
Exception
{
long
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
1000
*
1000
;
++
i
)
{
for
(
int
i
=
0
;
i
<
COUNT
;
++
i
)
{
text
.
getBytes
(
charset
);
}
long
millis
=
System
.
currentTimeMillis
()
-
start
;
...
...
@@ -54,7 +56,7 @@ public class UTF8Test extends TestCase {
private
void
f1
()
throws
Exception
{
long
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
1000
*
1000
;
++
i
)
{
for
(
int
i
=
0
;
i
<
COUNT
;
++
i
)
{
IOUtils
.
encodeUTF8
(
chars
,
0
,
chars
.
length
,
bytes
);
}
long
millis
=
System
.
currentTimeMillis
()
-
start
;
...
...
@@ -63,7 +65,7 @@ public class UTF8Test extends TestCase {
private
void
f2
()
throws
Exception
{
long
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
1000
*
1000
;
++
i
)
{
for
(
int
i
=
0
;
i
<
COUNT
;
++
i
)
{
charset
.
newEncoder
().
encode
(
CharBuffer
.
wrap
(
chars
));
}
long
millis
=
System
.
currentTimeMillis
()
-
start
;
...
...
src/test/java/com/alibaba/json/test/UTF8Test_decode.java
浏览文件 @
0546d845
...
...
@@ -37,8 +37,8 @@ public class UTF8Test_decode extends TestCase {
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
long
start
=
System
.
currentTimeMillis
();
//
f0(); // 764
f1
();
// 695
f0
();
// 764
//
f1(); // 695
// f2(); // 975
long
millis
=
System
.
currentTimeMillis
()
-
start
;
System
.
out
.
println
(
"millis : "
+
millis
);
...
...
src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain.java
浏览文件 @
0546d845
...
...
@@ -29,10 +29,14 @@ public class BenchmarkMain {
// executor.getCaseList().add(new EishayDecodeBytes());
// executor.getCaseList().add(new EishayEncodeOutputStream());
// executor.getCaseList().add(new EishayEncodeToBytes());
// executor.getCaseList().add(new EishayDecode());
executor
.
getCaseList
().
add
(
new
EishayDecode
());
// 1069
//JDK8_162 1094
//JDK9_01 1214
//JDK9_04 1252
//JDK10 1088
// executor.getCaseList().add(new EishayDecodeByClassName());
// executor.getCaseList().add(new EishayTreeDecode());
executor
.
getCaseList
().
add
(
new
EishayEncode
());
//
executor.getCaseList().add(new EishayEncode());
// executor.getCaseList().add(new EishayEncodeManual());
// executor.getCaseList().add(new IntArray1000Decode());
// executor.getCaseList().add(new StringArray1000Decode());
...
...
src/test/java/com/alibaba/json/test/benchmark/JSONPathBenchmarkTest.java
浏览文件 @
0546d845
...
...
@@ -8,10 +8,10 @@ public class JSONPathBenchmarkTest {
public
static
void
main
(
String
[]
args
)
throws
Exception
{
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
f0
();
f0
();
// 390 353
}
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
f1
();
//
f1();
}
}
...
...
src/test/java/com/alibaba/json/test/benchmark/basic/IntBenchmark.java
浏览文件 @
0546d845
...
...
@@ -19,6 +19,7 @@ public class IntBenchmark {
"}"
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
System
.
getProperty
(
"java.vm.name"
)
+
" "
+
System
.
getProperty
(
"java.runtime.version"
));
// Model model = new Model();
// model.v1 = new Random().nextInt();
// model.v2 = new Random().nextInt();
...
...
@@ -30,9 +31,9 @@ public class IntBenchmark {
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
//
perf(); // 1798
perf
();
// 1798
// perf2(); // 1877
perf3
();
// 20624 2334
//
perf3(); // 20624 2334
}
}
...
...
src/test/java/com/alibaba/json/test/benchmark/jdk10/StringBenchmark_jackson.java
浏览文件 @
0546d845
package
com.alibaba.json.test.benchmark.jdk10
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.openjdk.jmh.annotations.*
;
import
java.io.IOException
;
import
java.util.HashMap
;
@Warmup
(
iterations
=
10
)
@Measurement
(
iterations
=
10
)
@State
(
Scope
.
Benchmark
)
public
class
StringBenchmark_jackson
{
static
ObjectMapper
mapper
=
new
ObjectMapper
();
static
private
String
s
=
"{\"compress\":true,\"queryParams\":\"^^$$Z29e389d72fca43e2591dfa6d5bd182039|null{$_$}H4sIAAAAAAAAAK1YW2/kthX+K4GeGsCdkpRIit6XztrehVHf4ssmabwYUCRlay2Jii72ThcD9L3IY5/7NwL076To3+ghJc1obDd2g754R0fnfvnO0X4J0loW5sHWd2cSfjWHRZUHu1+CKpdtauviclkZ96xy2TQnwBrsBsoWM5lniUzkrK2lNjOVZ6ZsZ4XVJp81tquVmZ1NNHwgwU5Q9tLfHp4fHB1cXCzCBQKqrXVWSrBJVjtBJW/Mf7PYSptIO4OflS2dNb0EjZmaFaaVE7L7lZvPs7dX35PZ2aiw1w2qbkxparC3E2jTKCD8+5//+OXnv/7y89/+9dPfgVrI+s60QN94/P7g5OB8fjR1loOzuVUyd+//crvYOwmA0jWmnjdNdlO+nLLmVtZGz6raNOC1bDNbzipXgtk3namXvho+bbUptalPa/jjiU511uyN8X4wdQOyJNht6864MJcFkNes4NMcYlagcRnspjJvgCkrm1bm+RbjhDbXsmptfWFyo1qjnxO7tDc3uTmSTXsBznfNs6qhD25l8wLXYOzXmUZX3tW22Id6Z/maq6qtMk0zdbNxbHP9qWvagbhauXrn2f2YWhexzu4zl7s9aFuoURghjDFkXGoNVWnWfM1g/FB7qUHNvOdyRNSX3v9cOfsXXVXZuj1tb019bpQBQ+XNxL/h/fH+ny+fUveeo9mysXmmfZ9MXp+CJ42Rh9VTGvgH/26yKX0XbNztu6KfNqDkWXm3HVJpjL6qwKSJhhdrXSDeh2XW8q19KEf5MrWQKZdzyMp9psz8UUbrMSeDOHDeWKubR3yrnYHTHJv21uonFTmfvoUSjm1yArgj8+23zh0Yw8KWazVJt+yrxjEhKKYR9aH1/TCECjwn9mGcLuvG8MIDnFNQmtZBZ++qNi7UPqLg4Pjs8nuHOtso+AT+Nog3gZlm2bSmeKQp6ZqshOQMZI8fweCR63fnTwvvBsR5d356vAAMPDn9FrhSYHg7iWTVk3zllC3TrC48wlx4y8EuBnJtoNvKmy36l8G3wciDrBxkWt3lo13IVwlWVo6cZLlPU9tmrjoYIURFGP2xh/KFLHVtM73gMzaL3NxV1YBmwLwhZoPmorXVAJ5Jl+XaR95zPBXrJDwcX56eXez/6Q/hDM2iGf/qd/Pe4hs+Q2++y6QtsjfHh18dz7/7OnCTM2Zo0+WPuyNrTszD2lrfE00/oucGSg3tdlVvsKk2P3amaV15jsH7EYxAJmtNX7QAVocDsczWWbs87wU2jLZyE994JC98FoEbBrdeVgCXdf/cZgUIyQIMBAyHJIxCRDndp/OIUBLtM8b3Ax8PDEi6J+t6+d6N2wQcwZ+ivwCC3R++BLZrXeQBpyxGUZykIkU6otgQJhHmJuGGKaKE72DYUO1p1/pG8VJKxBgzQilSIokREiqkRnIghlhizUFKybodcMaZdj8pY0hggpkICWTornPE0DUMobEgkQCq6mBX2rUlkL7P8hxmaHxsYJWY4fePnSxbSKpv56y8BzdtvfxmTUUzNLS5ucxci2FKCKYopIww7nwsKgnLfLQEC1yPRe/PiOlybKo8Wxfu4zCYz6T0Fcnxou9r21XDsF8ez4+OFu+uzk8OL6/OD/xVcO7vgos2U3drH+7M0ou9heiC0rZDay5aQMM87eoya7samsCD8mjoCGDl1Dnn/Hy54h+f2aQwlWXjN5rH2sHr32M/VQCnV9P1/AAVe28v7Z4D9Bsz2VwwW9vMfpkeW52l2UTBpBAu0eYzmB8TDWeX3aABmTmMVZAR/+gkHBjmn+AhwiGK48jluyuqvVtZlgYmt+zy3B137hxxFR16zat+MTcAfwsqohALwkkUxQuXgRcL/ljKgWdza6vKoe//cf4Bmsc0BdNhW+DF1pgtXA78n18BjR1XdAWjdpQ5vPohQEkqEeHRdIiiGBFsYoZZ8HHlJfTYfZNbdnotuQtgM1KPXkxPkO3LYt4sS/UOgGDTOMMxbtpmegsPpP3L0+FCgfOxsC7HE4fOrMNsY97BDQx1+JBtzqvqyasjc+/6xi/SIrEDWKTA8z5LW3fSTNvZpwD2jD/yhxtkcl88t3L+B3jcQrzfsAJfvahf2skjQoyo3BfrcOjfZxd9402HKMKGCa0ETQXFPCJxiBKWmEQgSrR03f953cVfrjfjfh3sXruBvw52roeR9ySXWE+DsfeEcfCvg9VE22nyCU7H3wQgq+21A9xlWy+Hrwr3Zdh3455Ut2Z9fq0/WJsLWDHS4XIf0PD1scDe2ZAwxEOaxlQrHicxD8OYuuQgFPEY9ZHJ8QNvEIqwkJxRHEnqJhHJWAoFCZSRjDVnvBcqbbksbLe2BNlOaSQjUJ/QiKE0lGmCBEpJmJAoHfK6uRUHOYMNDwkSTMRE0NgIzHTMqFBCplrK0MuN/dDvh8VLkNhHoWgoqBCJ5lQwnKAYmh8bhRiKhUkjr9hPB3xvLF7C5r49KMSCJNEJ55wJoyjChuqUEshnEm9Uuly+SiOPUxaGmmMEmU1Dg8NYY6plCpFgGbG1xtepEylXYcowVxEMNEk5YCmmKiEplTxkxKsrTGFfl0KVJGFKpJQmkgJhFlOkFYp0rLDiSGGvzs+sz+GrdNKQR6FEjEgqYsHgq1kxCI3jEBqGhhOdLomvUskg9bA1qIpTIUisE0Y4xcIgRnWc6nCj8pUuCuhHiohROAk5izBhhhoRaxFHsUx6iHDAnzXmxbosUN86sMsQVpowSsFNFScixZwqHQpMBY62dL7k5aDTyEglRnGcpqkAuCdIawQCKgUeaWKvc8T0VzZQ4sYjTqTGGkeMhYIDoEgGSyjVSvZ4ASdvvkGLNKWJMsAEk4B1xJOESQyTLHAM6dN9tpouKYZjaBBLQgwLSRIGKJjoiEEfRNAEiGqBOdOyh9fhw3P476nVfwDaiC3ccBQAAA==\",\"structures\":\"H4sIAAAAAAAAAI2QwW7DIBBE/4WzD+AYY/IHOUTpvbKsNawbJAMpxpVQ1X+vjZWzObK8nZ2ZX6K8m0ywj6AxDIxcPwloHXBZtkdFfB4r2THW1pxTJceOUqkuHEFswwsDpsUGwhc6lT4g5TVw3iXr10MkIMzvn2UdrYnva31FTEQ7CN52tOnGSU5UN5xh3QJlAkeBraqV3G3t4M1N/hyuyPcKLpqYSthX8NYseIoOlBxu9yinun1xd1u0TOZsBU2XFVYRjbP5wZDuGJ9elyhbtEUOst29hVO2//sHOuYJjmECAAA=\",\"submitParams\":\"^^$$Z262e889742b9875f5107901ea64c33b46|null{$_$}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\",\"validateParams\":\"^^$$5da126afd2e7ebcf402eecea37f8e6df{$_$}H4sIAAAAAAAAAIVRTWsCMRT8LzlLcNePVW9ZG4ogItpaepJn9qmL2WRJIq0VoffSY8/9G4X+HUv/Rt9WSr2U3ibzXmaGeXu2dFDgnXWbMRDyg6LUrLdnpYawtK642pVYvZUG70e0ynpM2YKDzhewAB4cZMiVztEEXtgMNfd26xTy8ZnCLGY1Zk6/bwYTOZTT6bwxrxNrXZYbIM/4UGMlrPAvxwB2AZYTLK2p3LIdKeaKFxjgjK6QxnueXt/GfPwjeNImqRUadORXYxl6RcTn++vx7fH49vTx/EJsAW6DgfjfxJdyJCdieB42obDaKtDV/GE9748YMVuPTnifr8z/lfk1OMx46dBTagi5NbysTsAvIMCMlrPvi5yqQ8z6a1SbPjXMekvQHmsMjXK7MkyDy82KTLrtSLRF0ql32qLRkEIK0WzFUookitMo7cq006wnddGKREd22y12OHwB3aDYjQACAAA=\"}"
;
static
private
DO
d_o
=
JSON
.
parseObject
(
s
,
DO
.
class
)
;
static
private
DO
d_o
;
static
private
Object
o
;
static
private
int
i
;
static
private
HashMap
<
String
,
String
>
methodMap
=
new
HashMap
<
String
,
String
>();
static
{
try
{
d_o
=
mapper
.
readValue
(
s
,
DO
.
class
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
@Setup
public
void
prepare
()
{
methodMap
.
put
(
"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark.prepare(aaa,bbb,com.
alibaba.fastjson.JSON
)"
,
""
);
methodMap
.
put
(
"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark.prepare(aaa,bbb,com.
fasterxml.jackson.databind.ObjectMapper
)"
,
""
);
}
@Benchmark
@Fork
(
value
=
3
,
jvmArgs
=
"-XX:+CompactStrings"
)
public
void
testParseJsonComp
()
{
o
=
JSON
.
parseObject
(
s
,
DO
.
class
);
public
void
testParseJsonComp
()
throws
Exception
{
o
=
mapper
.
readValue
(
s
,
DO
.
class
);
}
@Benchmark
@Fork
(
value
=
3
,
jvmArgs
=
"-XX:-CompactStrings"
)
public
void
testParseJson
()
{
o
=
JSON
.
parseObject
(
s
,
DO
.
class
);
public
void
testParseJson
()
throws
Exception
{
o
=
mapper
.
readValue
(
s
,
DO
.
class
);
}
// @Benchmark
@Fork
(
value
=
3
,
jvmArgs
=
"-XX:+CompactStrings"
)
public
void
testToJsonComp
()
{
public
void
testToJsonComp
()
throws
Exception
{
o
=
JSON
.
toJSON
(
d_o
);
}
// @Benchmark
@Fork
(
value
=
3
,
jvmArgs
=
"-XX:-CompactStrings"
)
public
void
testToJson
()
{
public
void
testToJson
()
throws
Exception
{
o
=
JSON
.
toJSON
(
d_o
);
}
...
...
@@ -75,7 +85,7 @@ public class StringBenchmark_jackson {
sb
.
append
(
"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark"
)
.
append
(
"."
).
append
(
"prepare"
).
append
(
"("
)
.
append
(
"aaa"
).
append
(
","
).
append
(
"bbb"
).
append
(
","
)
.
append
(
"com.
alibaba.fastjson.JSON
"
).
append
(
")"
);
.
append
(
"com.
fasterxml.jackson.databind.ObjectMapper
"
).
append
(
")"
);
return
methodMap
.
get
(
sb
.
toString
());
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录