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/DIST/nv-buf-storage-bw.js +34 -0
- package/README.md +279 -0
- package/TEST/check-date.js +33 -0
- package/TEST/check-dump-load.js +70 -0
- package/TEST/check-json.js +32 -0
- package/TEST/check-rgx.js +33 -0
- package/TEST/check-ta.js +33 -0
- package/TEST/check.js +199 -0
- package/TEST/perf-file.js +62 -0
- package/TEST/perf-path.js +39 -0
- package/TEST/perf.js +733 -0
- package/TEST/tst.sh +9 -0
- package/clses/non-scalable.js +28 -0
- package/clses/scalable.js +28 -0
- package/com.sh +1 -0
- package/index.d.ts +108 -0
- package/index.js +148 -0
- package/mthds/cmmn.js +576 -0
- package/mthds/non-scalable.js +9 -0
- package/mthds/scalable.js +36 -0
- package/package.json +25 -0
- package/util.js +63 -0
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
|
+
|