json-as 0.5.57 → 0.5.59

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/README.md CHANGED
@@ -1,8 +1,5 @@
1
1
  # AS-JSON
2
2
 
3
- ![AssemblyScript](https://img.shields.io/badge/AssemblyScript-blue)
4
- ![WebAssembly](https://img.shields.io/badge/WebAssemby-purple)
5
-
6
3
  JSON for AssemblyScript focused on performance, low-overhead, and ease-of-use.
7
4
 
8
5
  ## Installation
@@ -21,6 +18,7 @@ Alternatively, add it to your `asconfig.json`
21
18
 
22
19
  ```
23
20
  {
21
+ // ...
24
22
  "options": {
25
23
  "transform": ["json-as/transform"]
26
24
  }
@@ -68,17 +66,17 @@ const stringified = JSON.stringify<Player>(player);
68
66
  const parsed = JSON.parse<Player>(stringified);
69
67
  ```
70
68
 
69
+ If you use this project in your codebase, consider dropping a [star](https://github.com/JairusSW/as-json). I would really appreciate it!
71
70
  ## Performance
72
71
 
73
- Here are some benchmarks I took with `tinybench` (JavaScript) and `astral` (AssemblyScript).
74
- I took the benchmarks using the stub runtime which doesn't call the Garbage Collector, so you may expect a 10% to 40% decrease from low to high throughput.
72
+ Run or view the benchmarks [here](https://github.com/JairusSW/as-json/tree/master/bench)
75
73
 
76
- Tests are run on Ubuntu/WSL2 with a AMD Ryzen 9 CPU
74
+ Below are benchmark results comparing JavaScript, WAVM (WebAssembly Virtual Machine), and Wasmtime environments.
77
75
 
78
76
  JavaScript Results
79
77
 
80
- ```
81
78
  NodeJS v20.5.1 - TinyBench v2.5.0 (V8)
79
+ ```
82
80
  ┌───────────────────────────┬───────────────┐
83
81
  │ Task Name │ ops / sec │
84
82
  ├───────────────────────────┼───────────────┤
@@ -93,8 +91,8 @@ NodeJS v20.5.1 - TinyBench v2.5.0 (V8)
93
91
 
94
92
  AssemblyScript Results
95
93
 
96
- ```
97
94
  WAVM v0.0.0-prerelease - as-bench v0.0.0-alpha (LLVM)
95
+ ```
98
96
  ┌───────────────────────────┬───────────────┐
99
97
  │ Task Name │ ops / sec │
100
98
  ├───────────────────────────┼───────────────┤
@@ -107,8 +105,8 @@ WAVM v0.0.0-prerelease - as-bench v0.0.0-alpha (LLVM)
107
105
  └───────────────────────────┴───────────────┘
108
106
  ```
109
107
 
110
- ```
111
108
  Wasmtime v11.0.1 - as-bench v0.0.0-alpha (Cranelift)
109
+ ```
112
110
  ┌───────────────────────────┬───────────────┐
113
111
  │ Task Name │ ops / sec │
114
112
  ├───────────────────────────┼───────────────┤
@@ -123,4 +121,4 @@ Wasmtime v11.0.1 - as-bench v0.0.0-alpha (Cranelift)
123
121
 
124
122
  ## Issues
125
123
 
126
- Please submit an issue to https://github.com/JairusSW/as-json/issues if you find anything wrong with this library
124
+ Please submit an issue to https://github.com/JairusSW/as-json/issues if you find anything wrong with this library
package/assembly/test.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { bench, blackbox } from "../../../WebAssembly/benchmark-wasm/assembly/bench";
2
- import { JSON, parseString, parseStringArray, parseStringArrayVirtual, serializeString } from "./src/json";
1
+ import { bench, blackbox } from "as-bench/assembly/bench";
2
+ import { JSON } from "./src/json";
3
3
  // @ts-ignore
4
4
  @json
5
5
  class Vec3 {
@@ -45,25 +45,6 @@ console.log("Implemented: " + JSON.stringify(JSON.parse<Vec3>('{"x":3.4,"y":1.2,
45
45
  console.log("Original: " + JSON.stringify(player));
46
46
  //console.log("Revised: " + vec.__JSON_Deserialize('{"x":3,"y":1,"z":8}').__JSON_Serialize());
47
47
  console.log("Implemented: " + JSON.stringify(JSON.parse<Player>('{"firstName":"Emmet","lastName":"West","lastActive":[8,27,2022],"age":23,"pos":{"x":3.4,"y":1.2,"z":8.3},"isVerified":true}')));
48
-
49
- console.log("Serialized String: " + serializeString('st"ring" w""ith quotes"'));
50
- console.log("Parsed Array: " + JSON.stringify(parseStringArray('["st\\"ring\\" w\\"\\"ith quotes\\""]')));
51
- console.log("Parsed Array: " + JSON.stringify(parseStringArrayVirtual('["st\\"ring\\" w\\"\\"ith quotes\\""]')));
52
- bench("New Stringify String", () => {
53
- blackbox<string>(serializeString(blackbox<string>('st"ring" w""ith quotes"')));
54
- });
55
-
56
- bench("New Parse String", () => {
57
- blackbox<string>(parseString(blackbox<string>('"st\\"ring\\" w\\"\\"ith quotes\\""')))
58
- });
59
-
60
- bench("Old Parse String Array", () => {
61
- blackbox<string[]>(parseStringArray('["st\\"ring\\" w\\"\\"ith quotes\\""]'));
62
- })
63
-
64
- bench("New Parse String Array", () => {
65
- blackbox<string[]>(parseStringArrayVirtual('["st\\"ring\\" w\\"\\"ith quotes\\""]'));
66
- });
67
48
  /*
68
49
  // 9,325,755
69
50
  bench("Stringify Object (Vec3)", () => {
@@ -71,7 +52,7 @@ bench("Stringify Object (Vec3)", () => {
71
52
  });
72
53
 
73
54
  // 17,747,531 -> 55,517,015
74
- /*bench("New Parse Object (Vec3)", () => {
55
+ bench("New Parse Object (Vec3)", () => {
75
56
  blackbox<Vec3>(vec.__JSON_Deserialize(blackbox<string>('{"x":0,"y":0,"z":0}')));
76
57
  });
77
58
 
@@ -1,4 +1,4 @@
1
- import { bench, blackbox } from "../../../WebAssembly/benchmark-wasm/assembly/bench";
1
+ import { bench, blackbox } from "as-bench/assembly/bench";
2
2
  import { __atoi_fast } from "../assembly/src/util";
3
3
  import { JSON } from "../assembly";
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "0.5.57",
3
+ "version": "0.5.59",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "types": "assembly/index.ts",
6
6
  "author": "Jairus Tanaka",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-as/transform",
3
- "version": "0.5.57",
3
+ "version": "0.5.59",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",