@@ -38,6 +38,21 @@ const schemaCJS = {
38
38
}
39
39
}
40
40
41
+ const schemaAJVJTD = {
42
+ properties : {
43
+ firstName : {
44
+ type : 'string'
45
+ } ,
46
+ lastName : {
47
+ type : 'string' ,
48
+ nullable : true
49
+ } ,
50
+ age : {
51
+ type : 'uint8'
52
+ }
53
+ }
54
+ }
55
+
41
56
const arraySchema = {
42
57
title : 'array schema' ,
43
58
type : 'array' ,
@@ -50,6 +65,10 @@ const arraySchemaCJS = {
50
65
items : schemaCJS
51
66
}
52
67
68
+ const arraySchemaAJVJTD = {
69
+ elements : schemaAJVJTD
70
+ }
71
+
53
72
const obj = {
54
73
firstName : 'Matteo' ,
55
74
lastName : 'Collina' ,
@@ -69,6 +88,12 @@ const stringifyArray = FJS(arraySchema)
69
88
const stringifyString = FJS ( { type : 'string' } )
70
89
let str = ''
71
90
91
+ const Ajv = require ( 'ajv/dist/jtd' )
92
+ const ajv = new Ajv ( )
93
+ const ajvSerialize = ajv . compileSerializer ( schemaAJVJTD )
94
+ const ajvSerializeArray = ajv . compileSerializer ( arraySchemaAJVJTD )
95
+ const ajvSerializeString = ajv . compileSerializer ( { type : 'string' } )
96
+
72
97
// eslint-disable-next-line
73
98
for ( var i = 0 ; i < 10000 ; i ++ ) {
74
99
str += i
@@ -89,6 +114,9 @@ suite.add('FJS creation', function () {
89
114
suite . add ( 'CJS creation' , function ( ) {
90
115
CJS ( schemaCJS )
91
116
} )
117
+ suite . add ( 'AJV Serialize creation' , function ( ) {
118
+ ajv . compileSerializer ( schemaAJVJTD )
119
+ } )
92
120
93
121
suite . add ( 'JSON.stringify array' , function ( ) {
94
122
JSON . stringify ( multiArray )
@@ -102,6 +130,10 @@ suite.add('compile-json-stringify array', function () {
102
130
CJSStringifyArray ( multiArray )
103
131
} )
104
132
133
+ suite . add ( 'AJV Serialize array' , function ( ) {
134
+ ajvSerializeArray ( multiArray )
135
+ } )
136
+
105
137
suite . add ( 'JSON.stringify long string' , function ( ) {
106
138
JSON . stringify ( str )
107
139
} )
@@ -114,6 +146,10 @@ suite.add('compile-json-stringify long string', function () {
114
146
CJSStringifyString ( str )
115
147
} )
116
148
149
+ suite . add ( 'AJV Serialize long string' , function ( ) {
150
+ ajvSerializeString ( str )
151
+ } )
152
+
117
153
suite . add ( 'JSON.stringify short string' , function ( ) {
118
154
JSON . stringify ( 'hello world' )
119
155
} )
@@ -126,6 +162,10 @@ suite.add('compile-json-stringify short string', function () {
126
162
CJSStringifyString ( 'hello world' )
127
163
} )
128
164
165
+ suite . add ( 'AJV Serialize short string' , function ( ) {
166
+ ajvSerializeString ( 'hello world' )
167
+ } )
168
+
129
169
suite . add ( 'JSON.stringify obj' , function ( ) {
130
170
JSON . stringify ( obj )
131
171
} )
@@ -138,6 +178,10 @@ suite.add('compile-json-stringify obj', function () {
138
178
CJSStringify ( obj )
139
179
} )
140
180
181
+ suite . add ( 'AJV Serialize obj' , function ( ) {
182
+ ajvSerialize ( obj )
183
+ } )
184
+
141
185
suite . on ( 'cycle' , cycle )
142
186
143
187
suite . run ( )
0 commit comments