2
2
3
3
4
4
const t = require ( 'tape' ) ;
5
- const cluster = require ( './' ) ;
6
5
const random = require ( 'gauss-random' )
7
6
const bitsf64 = require ( 'math-float64-from-bits' )
8
- const ui8bits = require ( 'math-uint8-bits' )
9
- const f64bits = require ( 'math-float64-bits' )
7
+ // const f64bits = require('math-float64-bits')
10
8
11
9
12
10
t ( 'packing 1e6 array' , t => {
13
11
let y = new Float64Array ( 1e6 )
14
- let x = new Float64Array ( 1e6 )
12
+
15
13
console . time ( 1 )
16
14
y . subarray ( 0e5 , 1e5 )
17
15
y . subarray ( 1e5 , 2e5 )
@@ -31,17 +29,14 @@ t('float64 packing', t => {
31
29
// uint8 (level) + uint32 (id) + float32→normalized uint16 (x)
32
30
33
31
let f64 = new Float64Array ( 1 )
34
- let view = new DataView ( f64 . buffer )
35
- let ui8 = new Uint8Array ( f64 . buffer )
36
- let ui16 = new Uint16Array ( f64 . buffer )
37
32
let ui32 = new Uint32Array ( f64 . buffer )
38
33
39
34
// view.setUint8(7, parseInt('10000000', 2))
40
35
// view.setUint8(6, parseInt('00000000', 2))
41
36
// ui8[7] = 0xff
42
37
// ui16[2] = 0x1000
43
38
ui32 [ 1 ] = 0x00ff0000 & 0x01 << 16 | 0x0000ffff & 0xffff
44
- console . log ( f64 [ 0 ] , f64bits ( f64 [ 0 ] ) )
39
+ console . log ( f64 [ 0 ] /* , f64bits(f64[0]) */ )
45
40
46
41
let sign = '0' // ignore sign
47
42
let exp = '00000000000' // write levels as exponent
@@ -122,41 +117,3 @@ function data(N=1e6, f) {
122
117
123
118
return points
124
119
}
125
-
126
-
127
-
128
- /*
129
- // use x-sort if required
130
- if (options.sort) {
131
- // pack levels: uint8, x-coord: uint16 and id: uint32 to float64
132
- let packed = new Float64Array(n)
133
- let packedInt = new Uint32Array(packed.buffer)
134
- for (let i = 0; i < n; i++) {
135
- packedInt[i * 2] = i
136
- packedInt[i * 2 + 1] = (0x3ff00000 & (levels[i] << 20) | 0x0000ffff & ((1 - points[i * 2]) * 0xffff))
137
- }
138
-
139
- // do native sort
140
- packed.sort()
141
-
142
- // unpack data back
143
- let sortedLevels = new Uint8Array(n)
144
- let sortedWeights = new Uint32Array(n)
145
- let sortedIds = new Uint32Array(n)
146
- let sortedPoints = new Float64Array(n * 2)
147
- for (let i = 0; i < n; i++) {
148
- let id = packedInt[(n - i - 1) * 2]
149
- sortedLevels[i] = levels[id]
150
- sortedWeights[i] = weights[id]
151
- sortedIds[i] = ids[id]
152
- sortedPoints[i * 2] = points[id * 2]
153
- sortedPoints[i * 2 + 1] = points[id * 2 + 1]
154
- }
155
-
156
- ids = sortedIds
157
- levels = sortedLevels
158
- points = sortedPoints
159
- weights = sortedWeights
160
- }
161
-
162
- */
0 commit comments