@nshiab/simple-data-analysis-core 2.1.13 → 2.1.14

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.
Files changed (4) hide show
  1. package/README.md +28 -28
  2. package/llm.md +29 -29
  3. package/llms.txt +13 -13
  4. package/package.json +1 -1
package/README.md CHANGED
@@ -82,9 +82,9 @@ memory. Raw measurements are retained in `benchmarks/.work/observations.csv`.
82
82
 
83
83
  <!-- benchmark-results:start -->
84
84
 
85
- **Tabular versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.12 (Node.js 24.21.0); pandas 3.0.5 (Python 3.14.7); tidyverse 2.0.0 (R 4.6.1).
85
+ **Tabular versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.13 (Node.js 24.21.0); pandas 3.0.5 (Python 3.14.7); tidyverse 2.0.0 (R 4.6.1).
86
86
 
87
- **Spatial versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.12 (Node.js 24.21.0); GeoPandas 1.1.4 (Python 3.14.7); sf 1.1.2 (R 4.6.1).
87
+ **Spatial versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.13 (Node.js 24.21.0); GeoPandas 1.1.4 (Python 3.14.7); sf 1.1.2 (R 4.6.1).
88
88
 
89
89
  ### Tabular workload
90
90
 
@@ -95,10 +95,10 @@ and export the sorted results.
95
95
 
96
96
  | Library | Mean duration | Duration difference | Mean peak memory | Memory difference |
97
97
  | --------- | -------------: | ------------------: | ---------------: | ----------------: |
98
- | DuckDB | 1.27 ± 0.03 s | -11.1% | 2,613 MiB | -0.9% |
99
- | SDA-core | 1.43 ± 0.03 s | baseline | 2,636 MiB | baseline |
100
- | pandas | 29.47 ± 0.09 s | +1957.3% | 4,700 MiB | +78.3% |
101
- | tidyverse | 81.90 ± 0.25 s | +5617.5% | 8,178 MiB | +210.2% |
98
+ | DuckDB | 1.16 ± 0.02 s | -12.8% | 2,430 MiB | -1.1% |
99
+ | SDA-core | 1.33 ± 0.01 s | baseline | 2,457 MiB | baseline |
100
+ | pandas | 27.98 ± 0.04 s | +2002.1% | 4,699 MiB | +91.2% |
101
+ | tidyverse | 78.60 ± 0.46 s | +5804.3% | 8,178 MiB | +232.8% |
102
102
 
103
103
  ### Spatial workload
104
104
 
@@ -110,10 +110,10 @@ results.
110
110
 
111
111
  | Library | Mean duration | Duration difference | Mean peak memory | Memory difference |
112
112
  | --------- | ------------: | ------------------: | ---------------: | ----------------: |
113
- | DuckDB | 0.72 ± 0.01 s | -12.7% | 285 MiB | -10.2% |
114
- | SDA-core | 0.83 ± 0.02 s | baseline | 318 MiB | baseline |
115
- | GeoPandas | 1.16 ± 0.01 s | +39.4% | 293 MiB | -7.9% |
116
- | sf | 1.66 ± 0.01 s | +99.9% | 489 MiB | +53.9% |
113
+ | DuckDB | 0.72 ± 0.01 s | -11.8% | 285 MiB | -9.9% |
114
+ | SDA-core | 0.81 ± 0.00 s | baseline | 316 MiB | baseline |
115
+ | GeoPandas | 1.11 ± 0.00 s | +36.3% | 292 MiB | -7.7% |
116
+ | sf | 1.58 ± 0.01 s | +94.4% | 489 MiB | +54.8% |
117
117
 
118
118
  <!-- benchmark-results:end -->
119
119
 
@@ -132,8 +132,8 @@ setup, warm-up, the measured operation, and validation.
132
132
 
133
133
  | Operation | Rows | Batch size | Implementation | Mean duration ± SD | Mean peak process memory |
134
134
  | ---------------- | --------: | ---------: | -------------- | -----------------: | -----------------------: |
135
- | Join → aggregate | 1,000,000 | — | Core | 11.70 ± 0.14 ms | 176.3 MiB |
136
- | Join → aggregate | 1,000,000 | — | DuckDB | 10.85 ± 0.17 ms | 166.8 MiB |
135
+ | Join → aggregate | 1,000,000 | — | Core | 11.54 ± 0.03 ms | 174.4 MiB |
136
+ | Join → aggregate | 1,000,000 | — | DuckDB | 10.59 ± 0.06 ms | 168.0 MiB |
137
137
 
138
138
  #### JavaScript data transfer
139
139
 
@@ -143,14 +143,14 @@ increment, including Core's staging and table replacement.
143
143
 
144
144
  | Operation | Rows | Batch size | Implementation | Mean duration ± SD | Mean peak process memory |
145
145
  | -------------- | ------: | ---------: | -------------- | -----------------: | -----------------------: |
146
- | loadArray() | 100,000 | — | Core | 9.07 ± 0.33 ms | 357.1 MiB |
147
- | loadArray() | 100,000 | — | DuckDB | 16.85 ± 0.10 ms | 284.4 MiB |
148
- | getData() | 100,000 | — | Core | 10.66 ± 0.19 ms | 303.5 MiB |
149
- | getData() | 100,000 | — | DuckDB | 12.41 ± 0.31 ms | 290.0 MiB |
150
- | updateWithJS() | 100,000 | 1000 | Core | 65.87 ± 2.14 ms | 309.9 MiB |
151
- | updateWithJS() | 100,000 | 1000 | DuckDB | 57.85 ± 2.08 ms | 308.9 MiB |
152
- | updateWithJS() | 100,000 | 10000 | Core | 36.18 ± 1.45 ms | 324.9 MiB |
153
- | updateWithJS() | 100,000 | 10000 | DuckDB | 35.57 ± 1.39 ms | 324.2 MiB |
146
+ | loadArray() | 100,000 | — | Core | 8.63 ± 0.04 ms | 355.8 MiB |
147
+ | loadArray() | 100,000 | — | DuckDB | 16.28 ± 0.16 ms | 282.4 MiB |
148
+ | getData() | 100,000 | — | Core | 10.14 ± 0.04 ms | 302.2 MiB |
149
+ | getData() | 100,000 | — | DuckDB | 12.05 ± 0.16 ms | 289.2 MiB |
150
+ | updateWithJS() | 100,000 | 1000 | Core | 60.85 ± 0.19 ms | 306.5 MiB |
151
+ | updateWithJS() | 100,000 | 1000 | DuckDB | 52.77 ± 0.37 ms | 314.1 MiB |
152
+ | updateWithJS() | 100,000 | 10000 | Core | 35.22 ± 1.31 ms | 323.8 MiB |
153
+ | updateWithJS() | 100,000 | 10000 | DuckDB | 34.60 ± 1.68 ms | 334.7 MiB |
154
154
 
155
155
  #### JavaScript geometry updates
156
156
 
@@ -163,14 +163,14 @@ omitted here to keep the table concise.
163
163
 
164
164
  | Operation | Rows | Batch size | Implementation | Mean duration ± SD | Mean peak process memory |
165
165
  | ------------------------- | ------: | ---------: | -------------- | -----------------: | -----------------------: |
166
- | Points: geometry update | 100,000 | — | Core | 182.98 ± 2.85 ms | 489.2 MiB |
167
- | Points: geometry update | 100,000 | — | DuckDB | 183.96 ± 5.85 ms | 529.8 MiB |
168
- | Points: geometry update | 100,000 | 1000 | Core | 255.49 ± 4.22 ms | 335.0 MiB |
169
- | Points: geometry update | 100,000 | 1000 | DuckDB | 222.69 ± 3.00 ms | 266.8 MiB |
170
- | Polygons: geometry update | 1,000 | — | Core | 568.00 ± 2.26 ms | 1075.9 MiB |
171
- | Polygons: geometry update | 1,000 | — | DuckDB | 565.33 ± 2.60 ms | 1101.4 MiB |
172
- | Polygons: geometry update | 1,000 | 100 | Core | 566.28 ± 1.60 ms | 855.6 MiB |
173
- | Polygons: geometry update | 1,000 | 100 | DuckDB | 571.56 ± 1.62 ms | 845.0 MiB |
166
+ | Points: geometry update | 100,000 | — | Core | 174.87 ± 0.50 ms | 469.9 MiB |
167
+ | Points: geometry update | 100,000 | — | DuckDB | 172.13 ± 1.32 ms | 537.3 MiB |
168
+ | Points: geometry update | 100,000 | 1000 | Core | 245.27 ± 4.96 ms | 298.3 MiB |
169
+ | Points: geometry update | 100,000 | 1000 | DuckDB | 206.80 ± 1.60 ms | 272.4 MiB |
170
+ | Polygons: geometry update | 1,000 | — | Core | 549.70 ± 0.67 ms | 1067.7 MiB |
171
+ | Polygons: geometry update | 1,000 | — | DuckDB | 555.25 ± 4.17 ms | 1103.9 MiB |
172
+ | Polygons: geometry update | 1,000 | 100 | Core | 549.62 ± 2.49 ms | 786.0 MiB |
173
+ | Polygons: geometry update | 1,000 | 100 | DuckDB | 552.29 ± 0.43 ms | 881.3 MiB |
174
174
 
175
175
  <!-- benchmark-operations:end -->
176
176
 
package/llm.md CHANGED
@@ -1,4 +1,4 @@
1
- **Simple Data Analysis Core v2.1.13**
1
+ **Simple Data Analysis Core v2.1.14**
2
2
 
3
3
  ***
4
4
 
@@ -86,9 +86,9 @@ memory. Raw measurements are retained in `benchmarks/.work/observations.csv`.
86
86
 
87
87
  <!-- benchmark-results:start -->
88
88
 
89
- **Tabular versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.12 (Node.js 24.21.0); pandas 3.0.5 (Python 3.14.7); tidyverse 2.0.0 (R 4.6.1).
89
+ **Tabular versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.13 (Node.js 24.21.0); pandas 3.0.5 (Python 3.14.7); tidyverse 2.0.0 (R 4.6.1).
90
90
 
91
- **Spatial versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.12 (Node.js 24.21.0); GeoPandas 1.1.4 (Python 3.14.7); sf 1.1.2 (R 4.6.1).
91
+ **Spatial versions:** @duckdb/node-api 1.5.6-r.1; DuckDB v1.5.6 (Node.js 24.21.0); SDA-core 2.1.13 (Node.js 24.21.0); GeoPandas 1.1.4 (Python 3.14.7); sf 1.1.2 (R 4.6.1).
92
92
 
93
93
  ### Tabular workload
94
94
 
@@ -99,10 +99,10 @@ and export the sorted results.
99
99
 
100
100
  | Library | Mean duration | Duration difference | Mean peak memory | Memory difference |
101
101
  | --------- | -------------: | ------------------: | ---------------: | ----------------: |
102
- | DuckDB | 1.27 ± 0.03 s | -11.1% | 2,613 MiB | -0.9% |
103
- | SDA-core | 1.43 ± 0.03 s | baseline | 2,636 MiB | baseline |
104
- | pandas | 29.47 ± 0.09 s | +1957.3% | 4,700 MiB | +78.3% |
105
- | tidyverse | 81.90 ± 0.25 s | +5617.5% | 8,178 MiB | +210.2% |
102
+ | DuckDB | 1.16 ± 0.02 s | -12.8% | 2,430 MiB | -1.1% |
103
+ | SDA-core | 1.33 ± 0.01 s | baseline | 2,457 MiB | baseline |
104
+ | pandas | 27.98 ± 0.04 s | +2002.1% | 4,699 MiB | +91.2% |
105
+ | tidyverse | 78.60 ± 0.46 s | +5804.3% | 8,178 MiB | +232.8% |
106
106
 
107
107
  ### Spatial workload
108
108
 
@@ -114,10 +114,10 @@ results.
114
114
 
115
115
  | Library | Mean duration | Duration difference | Mean peak memory | Memory difference |
116
116
  | --------- | ------------: | ------------------: | ---------------: | ----------------: |
117
- | DuckDB | 0.72 ± 0.01 s | -12.7% | 285 MiB | -10.2% |
118
- | SDA-core | 0.83 ± 0.02 s | baseline | 318 MiB | baseline |
119
- | GeoPandas | 1.16 ± 0.01 s | +39.4% | 293 MiB | -7.9% |
120
- | sf | 1.66 ± 0.01 s | +99.9% | 489 MiB | +53.9% |
117
+ | DuckDB | 0.72 ± 0.01 s | -11.8% | 285 MiB | -9.9% |
118
+ | SDA-core | 0.81 ± 0.00 s | baseline | 316 MiB | baseline |
119
+ | GeoPandas | 1.11 ± 0.00 s | +36.3% | 292 MiB | -7.7% |
120
+ | sf | 1.58 ± 0.01 s | +94.4% | 489 MiB | +54.8% |
121
121
 
122
122
  <!-- benchmark-results:end -->
123
123
 
@@ -136,8 +136,8 @@ setup, warm-up, the measured operation, and validation.
136
136
 
137
137
  | Operation | Rows | Batch size | Implementation | Mean duration ± SD | Mean peak process memory |
138
138
  | ---------------- | --------: | ---------: | -------------- | -----------------: | -----------------------: |
139
- | Join → aggregate | 1,000,000 | — | Core | 11.70 ± 0.14 ms | 176.3 MiB |
140
- | Join → aggregate | 1,000,000 | — | DuckDB | 10.85 ± 0.17 ms | 166.8 MiB |
139
+ | Join → aggregate | 1,000,000 | — | Core | 11.54 ± 0.03 ms | 174.4 MiB |
140
+ | Join → aggregate | 1,000,000 | — | DuckDB | 10.59 ± 0.06 ms | 168.0 MiB |
141
141
 
142
142
  #### JavaScript data transfer
143
143
 
@@ -147,14 +147,14 @@ increment, including Core's staging and table replacement.
147
147
 
148
148
  | Operation | Rows | Batch size | Implementation | Mean duration ± SD | Mean peak process memory |
149
149
  | -------------- | ------: | ---------: | -------------- | -----------------: | -----------------------: |
150
- | loadArray() | 100,000 | — | Core | 9.07 ± 0.33 ms | 357.1 MiB |
151
- | loadArray() | 100,000 | — | DuckDB | 16.85 ± 0.10 ms | 284.4 MiB |
152
- | getData() | 100,000 | — | Core | 10.66 ± 0.19 ms | 303.5 MiB |
153
- | getData() | 100,000 | — | DuckDB | 12.41 ± 0.31 ms | 290.0 MiB |
154
- | updateWithJS() | 100,000 | 1000 | Core | 65.87 ± 2.14 ms | 309.9 MiB |
155
- | updateWithJS() | 100,000 | 1000 | DuckDB | 57.85 ± 2.08 ms | 308.9 MiB |
156
- | updateWithJS() | 100,000 | 10000 | Core | 36.18 ± 1.45 ms | 324.9 MiB |
157
- | updateWithJS() | 100,000 | 10000 | DuckDB | 35.57 ± 1.39 ms | 324.2 MiB |
150
+ | loadArray() | 100,000 | — | Core | 8.63 ± 0.04 ms | 355.8 MiB |
151
+ | loadArray() | 100,000 | — | DuckDB | 16.28 ± 0.16 ms | 282.4 MiB |
152
+ | getData() | 100,000 | — | Core | 10.14 ± 0.04 ms | 302.2 MiB |
153
+ | getData() | 100,000 | — | DuckDB | 12.05 ± 0.16 ms | 289.2 MiB |
154
+ | updateWithJS() | 100,000 | 1000 | Core | 60.85 ± 0.19 ms | 306.5 MiB |
155
+ | updateWithJS() | 100,000 | 1000 | DuckDB | 52.77 ± 0.37 ms | 314.1 MiB |
156
+ | updateWithJS() | 100,000 | 10000 | Core | 35.22 ± 1.31 ms | 323.8 MiB |
157
+ | updateWithJS() | 100,000 | 10000 | DuckDB | 34.60 ± 1.68 ms | 334.7 MiB |
158
158
 
159
159
  #### JavaScript geometry updates
160
160
 
@@ -167,14 +167,14 @@ omitted here to keep the table concise.
167
167
 
168
168
  | Operation | Rows | Batch size | Implementation | Mean duration ± SD | Mean peak process memory |
169
169
  | ------------------------- | ------: | ---------: | -------------- | -----------------: | -----------------------: |
170
- | Points: geometry update | 100,000 | — | Core | 182.98 ± 2.85 ms | 489.2 MiB |
171
- | Points: geometry update | 100,000 | — | DuckDB | 183.96 ± 5.85 ms | 529.8 MiB |
172
- | Points: geometry update | 100,000 | 1000 | Core | 255.49 ± 4.22 ms | 335.0 MiB |
173
- | Points: geometry update | 100,000 | 1000 | DuckDB | 222.69 ± 3.00 ms | 266.8 MiB |
174
- | Polygons: geometry update | 1,000 | — | Core | 568.00 ± 2.26 ms | 1075.9 MiB |
175
- | Polygons: geometry update | 1,000 | — | DuckDB | 565.33 ± 2.60 ms | 1101.4 MiB |
176
- | Polygons: geometry update | 1,000 | 100 | Core | 566.28 ± 1.60 ms | 855.6 MiB |
177
- | Polygons: geometry update | 1,000 | 100 | DuckDB | 571.56 ± 1.62 ms | 845.0 MiB |
170
+ | Points: geometry update | 100,000 | — | Core | 174.87 ± 0.50 ms | 469.9 MiB |
171
+ | Points: geometry update | 100,000 | — | DuckDB | 172.13 ± 1.32 ms | 537.3 MiB |
172
+ | Points: geometry update | 100,000 | 1000 | Core | 245.27 ± 4.96 ms | 298.3 MiB |
173
+ | Points: geometry update | 100,000 | 1000 | DuckDB | 206.80 ± 1.60 ms | 272.4 MiB |
174
+ | Polygons: geometry update | 1,000 | — | Core | 549.70 ± 0.67 ms | 1067.7 MiB |
175
+ | Polygons: geometry update | 1,000 | — | DuckDB | 555.25 ± 4.17 ms | 1103.9 MiB |
176
+ | Polygons: geometry update | 1,000 | 100 | Core | 549.62 ± 2.49 ms | 786.0 MiB |
177
+ | Polygons: geometry update | 1,000 | 100 | DuckDB | 552.29 ± 0.43 ms | 881.3 MiB |
178
178
 
179
179
  <!-- benchmark-operations:end -->
180
180
 
package/llms.txt CHANGED
@@ -1,18 +1,18 @@
1
- # Simple Data Analysis Core v2.1.13
1
+ # Simple Data Analysis Core v2.1.14
2
2
 
3
3
  > Lightweight DuckDB-powered TypeScript library for tabular, SQL, CSV, Parquet, and geospatial data analysis on Node.js.
4
4
 
5
- - [README](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/README.md): Installation, examples and usage.
5
+ - [README](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/README.md): Installation, examples and usage.
6
6
 
7
7
  ## API
8
- - [SDAError](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/classes/SDAError.md): SDAError class
9
- - [SimpleDB](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/classes/SimpleDB.md): SimpleDB class
10
- - [SimpleTable](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/classes/SimpleTable.md): SimpleTable class
11
- - [createDirectory](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/createDirectory.md): createDirectory function
12
- - [mergeOptions](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/mergeOptions.md): mergeOptions function
13
- - [parseValue](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/parseValue.md): parseValue function
14
- - [queryDB](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/queryDB.md): queryDB function
15
- - [queueAsyncBarrier](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/queueAsyncBarrier.md): queueAsyncBarrier function
16
- - [quoteIdentifier](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/quoteIdentifier.md): quoteIdentifier function
17
- - [stringToArray](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/stringToArray.md): stringToArray function
18
- - [updateColumnsWithJS](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.13/docs/functions/updateColumnsWithJS.md): updateColumnsWithJS function
8
+ - [SDAError](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/classes/SDAError.md): SDAError class
9
+ - [SimpleDB](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/classes/SimpleDB.md): SimpleDB class
10
+ - [SimpleTable](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/classes/SimpleTable.md): SimpleTable class
11
+ - [createDirectory](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/createDirectory.md): createDirectory function
12
+ - [mergeOptions](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/mergeOptions.md): mergeOptions function
13
+ - [parseValue](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/parseValue.md): parseValue function
14
+ - [queryDB](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/queryDB.md): queryDB function
15
+ - [queueAsyncBarrier](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/queueAsyncBarrier.md): queueAsyncBarrier function
16
+ - [quoteIdentifier](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/quoteIdentifier.md): quoteIdentifier function
17
+ - [stringToArray](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/stringToArray.md): stringToArray function
18
+ - [updateColumnsWithJS](https://raw.githubusercontent.com/nshiab/simple-data-analysis-core/v2.1.14/docs/functions/updateColumnsWithJS.md): updateColumnsWithJS function
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nshiab/simple-data-analysis-core",
3
- "version": "2.1.13",
3
+ "version": "2.1.14",
4
4
  "description": "Lightweight DuckDB-powered TypeScript library for tabular, SQL, CSV, Parquet, and geospatial data analysis on Node.js.",
5
5
  "keywords": [
6
6
  "csv",