nv-buf-storage 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/TEST/perf.js ADDED
@@ -0,0 +1,733 @@
1
+ const x = require("../index");
2
+
3
+ var buf = x();
4
+
5
+ var ROUNDS = Number(process.argv[2] ?? 1000000)
6
+
7
+ function now(){
8
+ return Date.now();
9
+ }
10
+
11
+ function print(name,start,end,rounds){
12
+ const ms = Number(end-start)
13
+ console.log(name)
14
+ console.log(" rounds :",rounds)
15
+ console.log(" total :",ms,"ms")
16
+ console.log(" op/ms :",rounds/ms)
17
+ }
18
+
19
+
20
+ // u8 write
21
+ function perf_write_u8() {
22
+ let t0 = now()
23
+ for(let i=0;i<ROUNDS;i++){
24
+ buf.wu8(i&255)
25
+ }
26
+ let t1 = now()
27
+ print("write u8",t0,t1,ROUNDS)
28
+ }
29
+
30
+
31
+ // u8 read
32
+ function perf_read_u8(){
33
+ let rs = new Array(ROUNDS)
34
+ for(let i=0;i<ROUNDS;i++){
35
+ rs[i] = buf.wu8(i&255)
36
+ }
37
+ let t0 = now()
38
+ for(let i=0;i<ROUNDS;i++){
39
+ buf.ru8(rs[i])
40
+ }
41
+ let t1 = now()
42
+ print("read u8",t0,t1,ROUNDS)
43
+ }
44
+
45
+ // i8 write
46
+ function perf_write_i8() {
47
+ let t0 = now()
48
+ for(let i=0;i<ROUNDS;i++){
49
+ buf.wi8(i&255)
50
+ }
51
+ let t1 = now()
52
+ print("write i8",t0,t1,ROUNDS)
53
+ }
54
+
55
+
56
+ // i8 read
57
+ function perf_read_i8(){
58
+ let rs = new Array(ROUNDS)
59
+ for(let i=0;i<ROUNDS;i++){
60
+ rs[i] = buf.wi8(i&255)
61
+ }
62
+ let t0 = now()
63
+ for(let i=0;i<ROUNDS;i++){
64
+ buf.ri8(rs[i])
65
+ }
66
+ let t1 = now()
67
+ print("read i8",t0,t1,ROUNDS)
68
+ }
69
+
70
+ // u16 write
71
+ function perf_write_u16(){
72
+ let t0 = now()
73
+ for(let i=0;i<ROUNDS;i++){
74
+ buf.wu16(i%65536);
75
+ //if(i%10000===0) {console.log(i);console.log(buf._fl.list_all_free_rngs())}
76
+ }
77
+ let t1 = now()
78
+ print("write u16",t0,t1,ROUNDS)
79
+ }
80
+
81
+
82
+ // u16 read
83
+ function perf_read_u16(){
84
+ let rs = new Array(ROUNDS)
85
+ for(let i=0;i<ROUNDS;i++){
86
+ rs[i] = buf.wu16(i%65536)
87
+ }
88
+ let t0 = now()
89
+ for(let i=0;i<ROUNDS;i++){
90
+ buf.ru16(rs[i])
91
+ }
92
+ let t1 = now()
93
+ print("read u16",t0,t1,ROUNDS)
94
+ }
95
+
96
+ // i16 write
97
+ function perf_write_i16() {
98
+ let t0 = now()
99
+ for(let i=0;i<ROUNDS;i++){
100
+ buf.wi16(i&255)
101
+ }
102
+ let t1 = now()
103
+ print("write i16",t0,t1,ROUNDS)
104
+ }
105
+
106
+
107
+ // i16 read
108
+ function perf_read_i16(){
109
+ let rs = new Array(ROUNDS)
110
+ for(let i=0;i<ROUNDS;i++){
111
+ rs[i] = buf.wi16(i&255)
112
+ }
113
+ let t0 = now()
114
+ for(let i=0;i<ROUNDS;i++){
115
+ buf.ri16(rs[i])
116
+ }
117
+ let t1 = now()
118
+ print("read i16",t0,t1,ROUNDS)
119
+ }
120
+
121
+ // u32 write
122
+ function perf_write_u32(){
123
+
124
+
125
+ let t0 = now()
126
+
127
+ for(let i=0;i<ROUNDS;i++){
128
+ buf.wu32(i);
129
+ //if(i%10000===0) {console.log(i);console.log(buf._fl.list_all_free_rngs())}
130
+ }
131
+
132
+ let t1 = now()
133
+
134
+ print("write u32",t0,t1,ROUNDS)
135
+ }
136
+
137
+
138
+ // u32 read
139
+ function perf_read_u32(){
140
+
141
+
142
+ let rs = new Array(ROUNDS)
143
+
144
+ for(let i=0;i<ROUNDS;i++){
145
+ rs[i] = buf.wu32(i)
146
+ }
147
+
148
+ let t0 = now()
149
+
150
+ for(let i=0;i<ROUNDS;i++){
151
+ buf.ru32(rs[i])
152
+ }
153
+
154
+ let t1 = now()
155
+
156
+ print("read u32",t0,t1,ROUNDS)
157
+ }
158
+
159
+ // i32 write
160
+ function perf_write_i32() {
161
+ let t0 = now()
162
+ for(let i=0;i<ROUNDS;i++){
163
+ buf.wi32(i&255)
164
+ }
165
+ let t1 = now()
166
+ print("write i32",t0,t1,ROUNDS)
167
+ }
168
+
169
+
170
+ // i32 read
171
+ function perf_read_i32(){
172
+ let rs = new Array(ROUNDS)
173
+ for(let i=0;i<ROUNDS;i++){
174
+ rs[i] = buf.wi32(i&255)
175
+ }
176
+ let t0 = now()
177
+ for(let i=0;i<ROUNDS;i++){
178
+ buf.ri32(rs[i])
179
+ }
180
+ let t1 = now()
181
+ print("read i32",t0,t1,ROUNDS)
182
+ }
183
+ // u64 write
184
+ function perf_write_u64() {
185
+ let t0 = now()
186
+ for(let i=0;i<ROUNDS;i++){
187
+ buf.wu64(BigInt(i))
188
+ }
189
+ let t1 = now()
190
+ print("write u64",t0,t1,ROUNDS)
191
+ }
192
+
193
+
194
+ // u64 read
195
+ function perf_read_u64(){
196
+ let rs = new Array(ROUNDS)
197
+ for(let i=0;i<ROUNDS;i++){
198
+ rs[i] = buf.wu64(BigInt(i))
199
+ }
200
+ let t0 = now()
201
+ for(let i=0;i<ROUNDS;i++){
202
+ buf.ru64(rs[i])
203
+ }
204
+ let t1 = now()
205
+ print("read u64",t0,t1,ROUNDS)
206
+ }
207
+
208
+ // i64 write
209
+ function perf_write_i64() {
210
+ let t0 = now()
211
+ for(let i=0;i<ROUNDS;i++){
212
+ buf.wi64(BigInt(i))
213
+ }
214
+ let t1 = now()
215
+ print("write i64",t0,t1,ROUNDS)
216
+ }
217
+
218
+
219
+ // i64 read
220
+ function perf_read_i64(){
221
+ let rs = new Array(ROUNDS)
222
+ for(let i=0;i<ROUNDS;i++){
223
+ rs[i] = buf.wi64(BigInt(i))
224
+ }
225
+ let t0 = now()
226
+ for(let i=0;i<ROUNDS;i++){
227
+ buf.ri64(rs[i])
228
+ }
229
+ let t1 = now()
230
+ print("read i64",t0,t1,ROUNDS)
231
+ }
232
+
233
+ // f32 write
234
+ function perf_write_f32() {
235
+ let t0 = now()
236
+ for(let i=0;i<ROUNDS;i++){
237
+ buf.wf32(Math.random())
238
+ }
239
+ let t1 = now()
240
+ print("write f32",t0,t1,ROUNDS)
241
+ }
242
+
243
+
244
+ // f32 read
245
+ function perf_read_f32(){
246
+ let rs = new Array(ROUNDS)
247
+ for(let i=0;i<ROUNDS;i++){
248
+ rs[i] = buf.wf32(Math.random())
249
+ }
250
+ let t0 = now()
251
+ for(let i=0;i<ROUNDS;i++){
252
+ buf.rf32(rs[i])
253
+ }
254
+ let t1 = now()
255
+ print("read f32",t0,t1,ROUNDS)
256
+ }
257
+
258
+ // f64 write
259
+ function perf_write_f64() {
260
+ let t0 = now()
261
+ for(let i=0;i<ROUNDS;i++){
262
+ buf.wf64(Math.random())
263
+ }
264
+ let t1 = now()
265
+ print("write f64",t0,t1,ROUNDS)
266
+ }
267
+
268
+
269
+ // f64 read
270
+ function perf_read_f64(){
271
+ let rs = new Array(ROUNDS)
272
+ for(let i=0;i<ROUNDS;i++){
273
+ rs[i] = buf.wf64(Math.random())
274
+ }
275
+ let t0 = now()
276
+ for(let i=0;i<ROUNDS;i++){
277
+ buf.rf64(rs[i])
278
+ }
279
+ let t1 = now()
280
+ print("read f64",t0,t1,ROUNDS)
281
+ }
282
+
283
+
284
+ // string write
285
+ function perf_write_str(){
286
+
287
+
288
+ let t0 = now()
289
+
290
+ for(let i=0;i<ROUNDS;i++){
291
+ buf.wstr("abcd")
292
+ }
293
+
294
+ let t1 = now()
295
+
296
+ print("write str",t0,t1,ROUNDS)
297
+ }
298
+
299
+
300
+ // string read
301
+ function perf_read_str(){
302
+
303
+
304
+ let rs = new Array(ROUNDS)
305
+
306
+ for(let i=0;i<ROUNDS;i++){
307
+ rs[i] = buf.wstr("abcd")
308
+ }
309
+
310
+ let t0 = now()
311
+
312
+ for(let i=0;i<ROUNDS;i++){
313
+ buf.rstr(rs[i])
314
+ }
315
+
316
+ let t1 = now()
317
+
318
+ print("read str",t0,t1,ROUNDS)
319
+ }
320
+
321
+
322
+
323
+ // circular object
324
+ let circular = [];
325
+ {
326
+ var st = new Set([])
327
+ for(let e of [1,1.1,undefined,null,true,false,"abcd","aÿ我𝑒",12345678901234567890n,[],{}]) {
328
+ st.add(e)
329
+ }
330
+ var mp = new Map()
331
+ let dict = {a:100,b:-0}
332
+ let ary = [0,1,2,3]
333
+ for(let e of [[{},[]],[true,false],[dict,dict],[ary,ary]]) {
334
+ mp.set(e,e)
335
+ }
336
+ for(let e of [[]]) {
337
+ mp.set(e,e)
338
+ }
339
+ for(let e of [1,1.1,undefined,null,true,false,"abcd","aÿ我𝑒",12345678901234567890n]) {
340
+ mp.set(e,e)
341
+ }
342
+ circular[0] = circular
343
+ circular[1] = {pr:circular[0]}
344
+ circular[2] = mp
345
+ st.add(mp)
346
+ mp.set("set",st);
347
+ }
348
+
349
+
350
+ // circular write
351
+ function perf_write_circular(){
352
+
353
+
354
+ let t0 = now()
355
+
356
+ for(let i=0;i<ROUNDS;i++){
357
+ buf.debug_write(circular)
358
+ }
359
+
360
+ let t1 = now()
361
+
362
+ print("write circular",t0,t1,ROUNDS)
363
+ }
364
+
365
+
366
+ // circular read
367
+ function perf_read_circular(){
368
+
369
+
370
+ let r = buf.debug_write(circular)
371
+
372
+ let t0 = now()
373
+
374
+ for(let i=0;i<ROUNDS;i++){
375
+ buf.debug_read(...r)
376
+ }
377
+
378
+ let t1 = now()
379
+
380
+ print("read circular",t0,t1,ROUNDS)
381
+ }
382
+
383
+
384
+
385
+ perf_write_u8()
386
+ perf_read_u8()
387
+ console.log(buf._fl.list_all_free_rngs())
388
+ console.log(buf.wu32(250))
389
+ console.log(buf._fl.list_all_free_rngs())
390
+
391
+ perf_write_i8();
392
+ perf_read_i8();
393
+
394
+ perf_write_u16();
395
+ perf_read_u16();
396
+ perf_write_u32();
397
+ perf_read_u32();
398
+ perf_write_i32();
399
+ perf_read_i32();
400
+
401
+ perf_write_u64();
402
+ perf_read_u64();
403
+ perf_write_i64();
404
+ perf_read_i64();
405
+
406
+ perf_write_f32();
407
+ perf_read_f32();
408
+ perf_write_f64();
409
+ perf_read_f64();
410
+
411
+ perf_write_str();
412
+ perf_read_str();
413
+
414
+ const U8A = new Uint8Array(10); crypto.getRandomValues(U8A);
415
+ const U8CA= new Uint8ClampedArray(10); crypto.getRandomValues(U8CA);
416
+ const I8A = new Int8Array(10); crypto.getRandomValues(I8A);
417
+
418
+ const U16A = new Uint16Array(10); crypto.getRandomValues(new Uint8Array(U16A.buffer));
419
+ const I16A = new Int16Array(10); crypto.getRandomValues(new Uint8Array(I16A.buffer));
420
+
421
+ const U32A = new Uint32Array(10); // 32-bit unsigned integers
422
+ crypto.getRandomValues(U32A);
423
+
424
+ const I32A = new Int32Array(10); // 32-bit signed integers
425
+ crypto.getRandomValues(I32A);
426
+
427
+ const F32A = new Float32Array(10); // 32-bit floating-point numbers
428
+ crypto.getRandomValues(new Uint8Array(F32A.buffer));
429
+
430
+ const F64A = new Float64Array(10); // 64-bit floating-point numbers
431
+ crypto.getRandomValues(new Uint8Array(F64A.buffer));
432
+
433
+ const BigUint64A = new BigUint64Array(10); // 64-bit unsigned big integers (requires BigInt)
434
+ crypto.getRandomValues(BigUint64A);
435
+
436
+ const BigInt64A = new BigInt64Array(10); // 64-bit signed big integers (requires BigInt)
437
+ crypto.getRandomValues(BigInt64A);
438
+
439
+ // u8a write
440
+ function perf_write_u8a() {
441
+ let t0 = now()
442
+ for(let i=0;i<ROUNDS;i++){
443
+ buf.wu8a(U8A)
444
+ }
445
+ let t1 = now()
446
+ print("write u8a",t0,t1,ROUNDS)
447
+ }
448
+
449
+
450
+ // u8a read
451
+ function perf_read_u8a(){
452
+ let rs = new Array(ROUNDS)
453
+ for(let i=0;i<ROUNDS;i++){
454
+ rs[i] = buf.wu8a(U8A)
455
+ }
456
+ let t0 = now()
457
+ for(let i=0;i<ROUNDS;i++){
458
+ buf.ru8a(rs[i])
459
+ }
460
+ let t1 = now()
461
+ print("read u8a",t0,t1,ROUNDS)
462
+ }
463
+
464
+ function perf_write_u8ca() {
465
+ let t0 = now()
466
+ for(let i=0;i<ROUNDS;i++){
467
+ buf.wu8ca(U8CA)
468
+ }
469
+ let t1 = now()
470
+ print("write u8ca",t0,t1,ROUNDS)
471
+ }
472
+
473
+
474
+ // u8a read
475
+ function perf_read_u8ca(){
476
+ let rs = new Array(ROUNDS)
477
+ for(let i=0;i<ROUNDS;i++){
478
+ rs[i] = buf.wu8ca(U8CA)
479
+ }
480
+ let t0 = now()
481
+ for(let i=0;i<ROUNDS;i++){
482
+ buf.ru8ca(rs[i])
483
+ }
484
+ let t1 = now()
485
+ print("read u8ca",t0,t1,ROUNDS)
486
+ }
487
+
488
+ // Write Performance for Uint16Array
489
+ function perf_write_u16a() {
490
+ let t0 = now();
491
+ for (let i = 0; i < ROUNDS; i++) {
492
+ buf.wu16a(U16A);
493
+ }
494
+ let t1 = now();
495
+ print("write u16a", t0, t1, ROUNDS);
496
+ }
497
+
498
+ // Read Performance for Uint16Array
499
+ function perf_read_u16a() {
500
+ let rs = new Array(ROUNDS);
501
+ for (let i = 0; i < ROUNDS; i++) {
502
+ rs[i] = buf.wu16a(U16A);
503
+ }
504
+ let t0 = now();
505
+ for (let i = 0; i < ROUNDS; i++) {
506
+ buf.ru16a(rs[i]);
507
+ }
508
+ let t1 = now();
509
+ print("read u16a", t0, t1, ROUNDS);
510
+ }
511
+
512
+ // Write Performance for Int8Array
513
+ function perf_write_i8a() {
514
+ let t0 = now();
515
+ for (let i = 0; i < ROUNDS; i++) {
516
+ buf.wi8a(I8A);
517
+ }
518
+ let t1 = now();
519
+ print("write i8a", t0, t1, ROUNDS);
520
+ }
521
+
522
+ // Read Performance for Int8Array
523
+ function perf_read_i8a() {
524
+ let rs = new Array(ROUNDS);
525
+ for (let i = 0; i < ROUNDS; i++) {
526
+ rs[i] = buf.wi8a(I8A);
527
+ }
528
+ let t0 = now();
529
+ for (let i = 0; i < ROUNDS; i++) {
530
+ buf.ri8a(rs[i]);
531
+ }
532
+ let t1 = now();
533
+ print("read i8a", t0, t1, ROUNDS);
534
+ }
535
+
536
+ // Write Performance for Int16Array
537
+ function perf_write_i16a() {
538
+ let t0 = now();
539
+ for (let i = 0; i < ROUNDS; i++) {
540
+ buf.wi16a(I16A);
541
+ }
542
+ let t1 = now();
543
+ print("write i16a", t0, t1, ROUNDS);
544
+ }
545
+
546
+ // Read Performance for Int16Array
547
+ function perf_read_i16a() {
548
+ let rs = new Array(ROUNDS);
549
+ for (let i = 0; i < ROUNDS; i++) {
550
+ rs[i] = buf.wi16a(I16A);
551
+ }
552
+ let t0 = now();
553
+ for (let i = 0; i < ROUNDS; i++) {
554
+ buf.ri16a(rs[i]);
555
+ }
556
+ let t1 = now();
557
+ print("read i16a", t0, t1, ROUNDS);
558
+ }
559
+
560
+ // Write Performance for Int32Array
561
+ function perf_write_i32a() {
562
+ let t0 = now();
563
+ for (let i = 0; i < ROUNDS; i++) {
564
+ buf.wi32a(I32A);
565
+ }
566
+ let t1 = now();
567
+ print("write i32a", t0, t1, ROUNDS);
568
+ }
569
+
570
+ // Read Performance for Int32Array
571
+ function perf_read_i32a() {
572
+ let rs = new Array(ROUNDS);
573
+ for (let i = 0; i < ROUNDS; i++) {
574
+ rs[i] = buf.wi32a(I32A);
575
+ }
576
+ let t0 = now();
577
+ for (let i = 0; i < ROUNDS; i++) {
578
+ buf.ri32a(rs[i]);
579
+ }
580
+ let t1 = now();
581
+ print("read i32a", t0, t1, ROUNDS);
582
+ }
583
+
584
+ // Write Performance for Int32Array
585
+ function perf_write_u32a() {
586
+ let t0 = now();
587
+ for (let i = 0; i < ROUNDS; i++) {
588
+ buf.wu32a(I32A);
589
+ }
590
+ let t1 = now();
591
+ print("write u32a", t0, t1, ROUNDS);
592
+ }
593
+
594
+ // Read Performance for Int32Array
595
+ function perf_read_u32a() {
596
+ let rs = new Array(ROUNDS);
597
+ for (let i = 0; i < ROUNDS; i++) {
598
+ rs[i] = buf.wu32a(I32A);
599
+ }
600
+ let t0 = now();
601
+ for (let i = 0; i < ROUNDS; i++) {
602
+ buf.ru32a(rs[i]);
603
+ }
604
+ let t1 = now();
605
+ print("read u32a", t0, t1, ROUNDS);
606
+ }
607
+
608
+
609
+ // Write Performance for Float32Array
610
+ function perf_write_f32a() {
611
+ let t0 = now();
612
+ for (let i = 0; i < ROUNDS; i++) {
613
+ buf.wf32a(F32A);
614
+ }
615
+ let t1 = now();
616
+ print("write f32a", t0, t1, ROUNDS);
617
+ }
618
+
619
+ // Read Performance for Float32Array
620
+ function perf_read_f32a() {
621
+ let rs = new Array(ROUNDS);
622
+ for (let i = 0; i < ROUNDS; i++) {
623
+ rs[i] = buf.wf32a(F32A);
624
+ }
625
+ let t0 = now();
626
+ for (let i = 0; i < ROUNDS; i++) {
627
+ buf.rf32a(rs[i]);
628
+ }
629
+ let t1 = now();
630
+ print("read f32a", t0, t1, ROUNDS);
631
+ }
632
+
633
+ // Write Performance for Float64Array
634
+ function perf_write_f64a() {
635
+ let t0 = now();
636
+ for (let i = 0; i < ROUNDS; i++) {
637
+ buf.wf64a(F64A);
638
+ }
639
+ let t1 = now();
640
+ print("write f64a", t0, t1, ROUNDS);
641
+ }
642
+
643
+ // Read Performance for Float64Array
644
+ function perf_read_f64a() {
645
+ let rs = new Array(ROUNDS);
646
+ for (let i = 0; i < ROUNDS; i++) {
647
+ rs[i] = buf.wf64a(F64A);
648
+ }
649
+ let t0 = now();
650
+ for (let i = 0; i < ROUNDS; i++) {
651
+ buf.rf64a(rs[i]);
652
+ }
653
+ let t1 = now();
654
+ print("read f64a", t0, t1, ROUNDS);
655
+ }
656
+
657
+ // Write Performance for BigInt64Array
658
+ function perf_write_i64a() {
659
+ let t0 = now();
660
+ for (let i = 0; i < ROUNDS; i++) {
661
+ buf.wi64a(BigInt64A);
662
+ }
663
+ let t1 = now();
664
+ print("write i64a", t0, t1, ROUNDS);
665
+ }
666
+
667
+ // Read Performance for BigInt64Array
668
+ function perf_read_i64a() {
669
+ let rs = new Array(ROUNDS);
670
+ for (let i = 0; i < ROUNDS; i++) {
671
+ rs[i] = buf.wi64a(BigInt64A);
672
+ }
673
+ let t0 = now();
674
+ for (let i = 0; i < ROUNDS; i++) {
675
+ buf.ri64a(rs[i]);
676
+ }
677
+ let t1 = now();
678
+ print("read i64a", t0, t1, ROUNDS);
679
+ }
680
+
681
+ // Write Performance for BigUint64Array
682
+ function perf_write_u64a() {
683
+ let t0 = now();
684
+ for (let i = 0; i < ROUNDS; i++) {
685
+ buf.wu64a(BigUint64A);
686
+ }
687
+ let t1 = now();
688
+ print("write u64a", t0, t1, ROUNDS);
689
+ }
690
+
691
+ // Read Performance for BigUint64Array
692
+ function perf_read_u64a() {
693
+ let rs = new Array(ROUNDS);
694
+ for (let i = 0; i < ROUNDS; i++) {
695
+ rs[i] = buf.wu64a(BigUint64A);
696
+ }
697
+ let t0 = now();
698
+ for (let i = 0; i < ROUNDS; i++) {
699
+ buf.ru64a(rs[i]);
700
+ }
701
+ let t1 = now();
702
+ print("read u64a", t0, t1, ROUNDS);
703
+ }
704
+ perf_write_u8a();
705
+ perf_read_u8a();
706
+ perf_write_u8ca();
707
+ perf_read_u8ca();
708
+ perf_write_i8a();
709
+ perf_read_i8a();
710
+ perf_write_u16a();
711
+ perf_read_u16a();
712
+ perf_write_i16a();
713
+ perf_read_i16a();
714
+
715
+ perf_write_u32a();
716
+ perf_read_u32a();
717
+ perf_write_i32a();
718
+ perf_read_i32a();
719
+
720
+ perf_write_u64a();
721
+ perf_read_u64a();
722
+ perf_write_i64a();
723
+ perf_read_i64a();
724
+
725
+ perf_write_f32a();
726
+ perf_read_f32a();
727
+ perf_write_f64a();
728
+ perf_read_f64a();
729
+
730
+ perf_write_circular()
731
+ perf_read_circular()
732
+
733
+
package/TEST/tst.sh ADDED
@@ -0,0 +1,9 @@
1
+ node check.js
2
+ node check-date.js
3
+ node check-rgx.js
4
+ node check-ta.js
5
+ node check-json.js
6
+ node check-dump-load.js
7
+
8
+
9
+