Skip to content

Commit

Permalink
Merge pull request #1479 from samchon/doc/benchmark
Browse files Browse the repository at this point in the history
Benchmark on server processor: NodeJS versus Bun
  • Loading branch information
samchon authored Feb 1, 2025
2 parents 65b5474 + 3582918 commit a0e9de8
Show file tree
Hide file tree
Showing 20 changed files with 257 additions and 100 deletions.
178 changes: 89 additions & 89 deletions benchmark/results/AMD EPYC 7763 64-Core Processor/README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
# Benchmark of `typia`
> - CPU: AMD EPYC 7763 64-Core Processor
> - Memory: 32,095 MB
> - Memory: 15,981 MB
> - OS: linux
> - NodeJS version: v20.3.0
> - Typia version: v4.1.8
> - NodeJS version: v20.18.1
> - Typia version: v7.6.0

## is
![is benchmark](images/is.svg)

Types | typia | typebox | ajv | io-ts | zod | class-validator
-------|------|------|------|------|------|------
object (simple) | 100,471 | 99,740 | 4,248 | 453 | 62 | 6.54
object (hierarchical) | 21,409 | 21,533 | 5,445 | 725 | 44 | 12
object (recursive) | 11,339 | 11,504 | 2,869 | 690 | 8.77 | 11
object (union, explicit) | 2,574 | 1,514 | 139 | 371 | 4.59 | -
object (union, implicit) | 2,119 | - | - | - | - | -
array (recursive) | 6,318 | 7,799 | 2,608 | 692 | 11 | 9.46
array (union, explicit) | 2,292 | 1,347 | 225 | 258 | 2.39 | -
array (union, implicit) | 2,043 | - | - | - | - | -
ultimate union | 675 | - | - | - | - | -
object (simple) | 100,903 | 100,575 | 3,977 | 453 | 53 | 6.64
object (hierarchical) | 38,759 | 20,855 | - | 706 | 42 | 12
object (recursive) | 13,993 | 11,573 | 4,752 | 660 | 7.99 | 11
object (union, explicit) | 3,625 | 1,562 | 136 | 358 | 4.53 | -
object (union, implicit) | 2,915 | - | - | - | - | -
array (recursive) | 8,111 | 7,772 | 2,571 | 676 | 11 | 9.11
array (union, explicit) | 2,455 | 1,347 | 222 | 255 | 2.38 | -
array (union, implicit) | 2,026 | - | - | - | - | -
ultimate union | 900 | - | - | - | - | -

> Unit: Megabytes/sec
Expand All @@ -31,15 +31,15 @@

Types | typia | typebox | ajv | io-ts | zod | class-validator
-------|------|------|------|------|------|------
object (simple) | 99,595 | 99,675 | 4,343 | 473 | 59 | 6.74
object (hierarchical) | 30,181 | 20,868 | 5,618 | 719 | 44 | 8.17
object (recursive) | 10,957 | 11,543 | 3,011 | 677 | 9.15 | 11
object (union, explicit) | 2,544 | 1,571 | 137 | 378 | 4.53 | -
object (union, implicit) | 2,161 | - | - | - | - | -
array (recursive) | 6,402 | 7,917 | 2,565 | 695 | 11 | 9.32
array (union, explicit) | 2,484 | 1,281 | 230 | 258 | 2.39 | -
array (union, implicit) | 2,054 | - | - | - | - | -
ultimate union | 679 | - | - | - | - | -
object (simple) | 101,420 | 101,670 | 4,137 | 461 | 57 | 6.52
object (hierarchical) | 36,127 | 20,421 | - | 717 | 41 | 11
object (recursive) | 13,786 | 10,634 | 4,668 | 667 | 8.35 | 11
object (union, explicit) | 3,544 | 1,579 | 135 | 363 | 4.55 | -
object (union, implicit) | 3,038 | - | - | - | - | -
array (recursive) | 8,047 | 7,732 | 2,588 | 682 | 11 | 9.41
array (union, explicit) | 2,490 | 1,303 | 223 | 230 | 2.34 | -
array (union, implicit) | 2,149 | - | - | - | - | -
ultimate union | 890 | - | - | - | - | -

> Unit: Megabytes/sec
Expand All @@ -51,15 +51,15 @@

Types | typia | typebox | ajv | io-ts | zod | class-validator
-------|------|------|------|------|------|------
object (simple) | 98,495 | 100,117 | 4,280 | 475 | 61 | 6.79
object (hierarchical) | 17,019 | 20,903 | 5,109 | 727 | 44 | 12
object (recursive) | 11,058 | 11,637 | 2,859 | 669 | 9.21 | 12
object (union, explicit) | 2,598 | 1,562 | 85 | 373 | 4.57 | -
object (union, implicit) | 2,256 | - | - | - | - | -
array (recursive) | 7,046 | 7,913 | 2,351 | 689 | 11 | 9.47
array (union, explicit) | 2,485 | 1,355 | 105 | 260 | 2.40 | -
array (union, implicit) | 2,040 | - | - | - | - | -
ultimate union | 680 | - | - | - | - | -
object (simple) | 100,928 | 101,841 | 4,109 | 458 | 56 | 6.72
object (hierarchical) | 35,795 | 20,438 | - | 702 | 42 | 10
object (recursive) | 13,725 | 11,130 | 4,727 | 650 | 8.07 | 10
object (union, explicit) | 3,505 | 1,539 | 83 | 361 | 4.53 | -
object (union, implicit) | 2,711 | - | - | - | - | -
array (recursive) | 8,027 | 7,633 | 2,291 | 653 | 10 | 9.28
array (union, explicit) | 2,413 | 1,283 | 101 | 257 | 2.34 | -
array (union, implicit) | 2,004 | - | - | - | - | -
ultimate union | 885 | - | - | - | - | -

> Unit: Megabytes/sec
Expand All @@ -71,15 +71,15 @@

Types | typia | typebox | io-ts | zod | class-validator
-------|------|------|------|------|------
object (simple) | 695 | 25 | 127 | 61 | 4.25
object (hierarchical) | 2,495 | 58 | 201 | 43 | 7.86
object (recursive) | 2,145 | 43 | 149 | 8.59 | 7.35
object (union, explicit) | 476 | 18 | 91 | 4.42 | -
object (union, implicit) | 345 | - | - | - | -
array (recursive) | 1,221 | 47 | 156 | 11 | 6.34
array (union, explicit) | 930 | 12 | 46 | 2.37 | -
array (union, implicit) | 787 | - | - | - | -
ultimate union | 222 | - | - | - | -
object (simple) | 732 | 18 | 120 | 54 | 4.23
object (hierarchical) | 2,749 | 39 | 179 | 41 | 7.86
object (recursive) | 2,263 | 32 | 118 | 7.64 | 6.91
object (union, explicit) | 538 | 11 | 80 | 4.42 | -
object (union, implicit) | 373 | - | - | - | -
array (recursive) | 1,180 | 30 | 125 | 9.42 | 6.14
array (union, explicit) | 915 | 7.78 | 38 | 2.36 | -
array (union, implicit) | 839 | - | - | - | -
ultimate union | 214 | - | - | - | -

> Unit: Megabytes/sec
Expand All @@ -91,15 +91,15 @@

Types | typia | typebox | io-ts | zod | class-validator
-------|------|------|------|------|------
object (simple) | 1,120 | 25 | 137 | 61 | 4.38
object (hierarchical) | 1,823 | 59 | 211 | 42 | 7.99
object (recursive) | 1,581 | 42 | 152 | 8.75 | 7.26
object (union, explicit) | 403 | 18 | 93 | 4.44 | -
object (union, implicit) | 277 | - | - | - | -
array (recursive) | 914 | 47 | 153 | 11 | 6.33
array (union, explicit) | 725 | 12 | 45 | 2.36 | -
array (union, implicit) | 582 | - | - | - | -
ultimate union | 180 | - | - | - | -
object (simple) | 1,098 | 18 | 128 | 56 | 4.17
object (hierarchical) | 1,943 | 39 | 190 | 41 | 7.74
object (recursive) | 1,672 | 32 | 123 | 7.59 | 7.23
object (union, explicit) | 436 | 11 | 77 | 4.28 | -
object (union, implicit) | 306 | - | - | - | -
array (recursive) | 850 | 31 | 128 | 9.84 | 6.30
array (union, explicit) | 736 | 7.94 | 38 | 2.31 | -
array (union, implicit) | 618 | - | - | - | -
ultimate union | 187 | - | - | - | -

> Unit: Megabytes/sec
Expand All @@ -111,14 +111,14 @@

Types | typia | typebox | ajv | class-validator
-------|------|------|------|------
object (simple) | 99,851 | 5.42 | 0.02 | 6.54
object (hierarchical) | 32,561 | 10 | 0.09 | 12
object (recursive) | 13,133 | 43 | 0.20 | 11
object (union, explicit) | 2,578 | 12 | 0.10 | 6.42
array (simple) | 9,851 | 139 | 0.17 | 24
array (hierarchical) | 18,628 | 1,502 | 5.11 | 20
array (recursive) | 7,707 | 490 | 2.08 | 6.75
array (union, explicit) | 4,587 | 121 | 0.64 | 28
object (simple) | 101,661 | 4.78 | 0.02 | 6.47
object (hierarchical) | 49,733 | 9.37 | 0.09 | 12
object (recursive) | 16,566 | 54 | 0.19 | 11
object (union, explicit) | 3,457 | 11 | 0.09 | 10
array (simple) | 14,248 | 104 | 0.52 | 24
array (hierarchical) | 28,216 | 506 | 2.35 | 19
array (recursive) | 10,725 | 552 | 2.00 | 9.01
array (union, explicit) | 4,849 | 108 | 0.64 | 27

> Unit: Megabytes/sec
Expand All @@ -130,14 +130,14 @@

Types | typia.stringify | typia.isStringify | typia.assertStringify | fast-json-stringify | JSON.stringify | class-transformer
-------|------|------|------|------|------|------
object (simple) | 1,340 | 1,099 | 1,020 | 402 | 124 | 6.14
object (hierarchical) | 436 | 430 | 421 | 315 | 180 | 12
object (recursive) | 598 | 561 | 542 | 165 | 201 | 10
object (union, explicit) | 189 | 170 | 166 | 132 | 123 | 4.54
array (simple) | 205 | 206 | 204 | 332 | 195 | 11
array (hierarchical) | 297 | 280 | 287 | 451 | 207 | 8.88
array (recursive) | 252 | 247 | 244 | 502 | 187 | 10
array (union, explicit) | 210 | 201 | 194 | 50 | 227 | 8.54
object (simple) | 1,048 | - | - | 414 | - | 5.96
object (hierarchical) | 498 | - | - | 407 | - | 12
object (recursive) | 609 | - | - | 487 | - | 10
object (union, explicit) | 196 | - | - | 131 | - | 4.43
array (simple) | 214 | - | - | 325 | - | 11
array (hierarchical) | 291 | - | - | 474 | - | 8.81
array (recursive) | 253 | - | - | 497 | - | 9.69
array (union, explicit) | 233 | - | - | 48 | - | 8.40

> Unit: Megabytes/sec
Expand All @@ -149,14 +149,14 @@

Types | fastify-typia | fastify-pure | fastify-class-transformer | express-typia | express-class-transformer
-------|------|------|------|------|------
object (simple) | 65 | 63 | 5.23 | 46 | 4.94
object (hierarchical) | 123 | 116 | 9.35 | 112 | 9.11
object (recursive) | 109 | 106 | 7.91 | 104 | 7.88
object (union, explicit) | 70 | 45 | 3.36 | 69 | 3.35
array (simple) | 101 | 97 | 8.04 | 100 | 8.14
array (hierarchical) | 81 | 68 | 5.67 | 108 | 4.83
array (recursive) | 97 | 92 | 6.44 | 102 | 6.35
array (union, explicit) | 107 | 70 | 6.24 | 113 | 6.13
object (simple) | 59 | 58 | 5.05 | 41 | 4.62
object (hierarchical) | 118 | 110 | 9.09 | 106 | 8.58
object (recursive) | 109 | 105 | 7.64 | 102 | 7.38
object (union, explicit) | 68 | 43 | 3.07 | 63 | 3.09
array (simple) | 87 | 90 | 7.23 | 91 | 6.79
array (hierarchical) | 72 | 72 | 4.12 | 89 | 5.16
array (recursive) | 90 | 83 | 5.66 | 96 | 5.67
array (union, explicit) | 99 | 68 | 5.67 | 107 | 5.51

> Unit: Megabytes/sec
Expand All @@ -168,14 +168,14 @@

Types | fastify-typia | fastify-pure | fastify-class-transformer | express-typia | express-pure | express-class-transformer
-------|------|------|------|------|------|------
object (simple) | 121 | 113 | 5.50 | 60 | 52 | 5.19
object (hierarchical) | 177 | 143 | 10 | 137 | 116 | 10
object (recursive) | 191 | 89 | 9.54 | 156 | 133 | 8.79
object (union, explicit) | 133 | 77 | 4.01 | 112 | 88 | 3.94
array (simple) | 145 | 124 | 9.44 | 123 | 131 | 9.56
array (hierarchical) | 177 | 66 | 6.01 | 159 | 146 | 7.47
array (recursive) | 151 | 96 | 8.27 | 139 | 135 | 8.07
array (union, explicit) | 147 | 32 | 7.84 | 130 | 154 | 7.73
object (simple) | 112 | 102 | 5.33 | 57 | 46 | 5.05
object (hierarchical) | 183 | 160 | 10 | 127 | 107 | 10
object (recursive) | 188 | 170 | 9.14 | 142 | 120 | 8.90
object (union, explicit) | 131 | 70 | 3.87 | 111 | 85 | 3.92
array (simple) | 115 | 127 | 9.12 | 105 | 112 | 8.89
array (hierarchical) | 142 | 61 | 5.45 | 140 | 132 | 5.22
array (recursive) | 128 | 83 | 7.92 | 124 | 123 | 7.82
array (union, explicit) | 128 | 30 | 7.49 | 120 | 137 | 7.40

> Unit: Megabytes/sec
Expand All @@ -187,14 +187,14 @@

Types | fastify-typia | fastify-pure | fastify-class-transformer | express-typia | express-class-transformer
-------|------|------|------|------|------
object (simple) | 92 | 89 | 6.70 | 61 | 9.63
object (hierarchical) | 147 | 132 | 12 | 124 | 18
object (recursive) | 140 | 95 | 11 | 126 | 16
object (union, explicit) | 91 | 57 | 3.29 | 79 | 3.07
array (simple) | 116 | 114 | 7.24 | 102 | 7.64
array (hierarchical) | 120 | 49 | 3.88 | 99 | 5.17
array (recursive) | 112 | 109 | 8.52 | 112 | 13
array (union, explicit) | 119 | 42 | 6.24 | 116 | 6.13
object (simple) | 90 | 83 | 6.75 | 60 | 6.85
object (hierarchical) | 146 | 111 | 12 | 130 | 18
object (recursive) | 138 | 130 | 10 | 127 | 15
object (union, explicit) | 93 | 54 | 3.09 | 84 | 3.07
array (simple) | 101 | 101 | 6.96 | 96 | 7.37
array (hierarchical) | 106 | 41 | 3.98 | 108 | 5.03
array (recursive) | 98 | 103 | 7.79 | 98 | 12
array (union, explicit) | 106 | 37 | 5.61 | 109 | 5.59

> Unit: Megabytes/sec
Expand All @@ -204,4 +204,4 @@



Total elapsed time: 4,249,718 ms
Total elapsed time: 4,135,803 ms
Loading

0 comments on commit a0e9de8

Please sign in to comment.