Commit 5800036
committed
perf: pre-allocate records array and use for-loops in FuseIndex.create
Three changes to reduce overhead during index construction:
1. Pre-allocate `records` with `new Array(docs.length)` and write by
index instead of growing via `push()`. For large collections the engine
was repeatedly reallocating the backing store.
2. Replace `forEach` with plain `for` loops in `create()` and
`_createObjectRecord()` to avoid closure allocation per iteration.
3. Extract `_createStringRecord` / `_createObjectRecord` so `create()`
can write directly into the pre-allocated array while `add()` still
uses the push-based `_addString` / `_addObject` wrappers.1 parent 5517a9b commit 5800036
12 files changed
Lines changed: 188 additions & 90 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
272 | 272 | | |
273 | 273 | | |
274 | 274 | | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
275 | 278 | | |
276 | 279 | | |
277 | 280 | | |
278 | | - | |
279 | | - | |
280 | | - | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
281 | 287 | | |
282 | 288 | | |
283 | | - | |
284 | | - | |
285 | | - | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
286 | 292 | | |
| 293 | + | |
287 | 294 | | |
288 | 295 | | |
289 | 296 | | |
| |||
319 | 326 | | |
320 | 327 | | |
321 | 328 | | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
322 | 338 | | |
323 | | - | |
| 339 | + | |
324 | 340 | | |
325 | | - | |
| 341 | + | |
326 | 342 | | |
327 | 343 | | |
328 | 344 | | |
329 | 345 | | |
330 | | - | |
331 | 346 | | |
332 | | - | |
| 347 | + | |
333 | 348 | | |
334 | 349 | | |
335 | 350 | | |
336 | 351 | | |
337 | 352 | | |
338 | 353 | | |
339 | | - | |
| 354 | + | |
| 355 | + | |
340 | 356 | | |
341 | 357 | | |
342 | | - | |
| 358 | + | |
343 | 359 | | |
344 | 360 | | |
345 | 361 | | |
| |||
379 | 395 | | |
380 | 396 | | |
381 | 397 | | |
382 | | - | |
383 | | - | |
| 398 | + | |
| 399 | + | |
384 | 400 | | |
385 | 401 | | |
386 | 402 | | |
| |||
Large diffs are not rendered by default.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
270 | 270 | | |
271 | 271 | | |
272 | 272 | | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
273 | 276 | | |
274 | 277 | | |
275 | 278 | | |
276 | | - | |
277 | | - | |
278 | | - | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
279 | 285 | | |
280 | 286 | | |
281 | | - | |
282 | | - | |
283 | | - | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
284 | 290 | | |
| 291 | + | |
285 | 292 | | |
286 | 293 | | |
287 | 294 | | |
| |||
317 | 324 | | |
318 | 325 | | |
319 | 326 | | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
320 | 336 | | |
321 | | - | |
| 337 | + | |
322 | 338 | | |
323 | | - | |
| 339 | + | |
324 | 340 | | |
325 | 341 | | |
326 | 342 | | |
327 | 343 | | |
328 | | - | |
329 | 344 | | |
330 | | - | |
| 345 | + | |
331 | 346 | | |
332 | 347 | | |
333 | 348 | | |
334 | 349 | | |
335 | 350 | | |
336 | 351 | | |
337 | | - | |
| 352 | + | |
| 353 | + | |
338 | 354 | | |
339 | 355 | | |
340 | | - | |
| 356 | + | |
341 | 357 | | |
342 | 358 | | |
343 | 359 | | |
| |||
377 | 393 | | |
378 | 394 | | |
379 | 395 | | |
380 | | - | |
381 | | - | |
| 396 | + | |
| 397 | + | |
382 | 398 | | |
383 | 399 | | |
384 | 400 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
272 | 275 | | |
273 | 276 | | |
274 | 277 | | |
275 | | - | |
276 | | - | |
277 | | - | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
278 | 284 | | |
279 | 285 | | |
280 | | - | |
281 | | - | |
282 | | - | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
283 | 289 | | |
| 290 | + | |
284 | 291 | | |
285 | 292 | | |
286 | 293 | | |
| |||
316 | 323 | | |
317 | 324 | | |
318 | 325 | | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
319 | 335 | | |
320 | | - | |
| 336 | + | |
321 | 337 | | |
322 | | - | |
| 338 | + | |
323 | 339 | | |
324 | 340 | | |
325 | 341 | | |
326 | 342 | | |
327 | | - | |
328 | 343 | | |
329 | | - | |
| 344 | + | |
330 | 345 | | |
331 | 346 | | |
332 | 347 | | |
333 | 348 | | |
334 | 349 | | |
335 | 350 | | |
336 | | - | |
| 351 | + | |
| 352 | + | |
337 | 353 | | |
338 | 354 | | |
339 | | - | |
| 355 | + | |
340 | 356 | | |
341 | 357 | | |
342 | 358 | | |
| |||
376 | 392 | | |
377 | 393 | | |
378 | 394 | | |
379 | | - | |
380 | | - | |
| 395 | + | |
| 396 | + | |
381 | 397 | | |
382 | 398 | | |
383 | 399 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
| 196 | + | |
| 197 | + | |
196 | 198 | | |
197 | 199 | | |
198 | 200 | | |
| |||
Large diffs are not rendered by default.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
270 | 273 | | |
271 | 274 | | |
272 | 275 | | |
273 | | - | |
274 | | - | |
275 | | - | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
276 | 282 | | |
277 | 283 | | |
278 | | - | |
279 | | - | |
280 | | - | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
281 | 287 | | |
| 288 | + | |
282 | 289 | | |
283 | 290 | | |
284 | 291 | | |
| |||
314 | 321 | | |
315 | 322 | | |
316 | 323 | | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
317 | 333 | | |
318 | | - | |
| 334 | + | |
319 | 335 | | |
320 | | - | |
| 336 | + | |
321 | 337 | | |
322 | 338 | | |
323 | 339 | | |
324 | 340 | | |
325 | | - | |
326 | 341 | | |
327 | | - | |
| 342 | + | |
328 | 343 | | |
329 | 344 | | |
330 | 345 | | |
331 | 346 | | |
332 | 347 | | |
333 | 348 | | |
334 | | - | |
| 349 | + | |
| 350 | + | |
335 | 351 | | |
336 | 352 | | |
337 | | - | |
| 353 | + | |
338 | 354 | | |
339 | 355 | | |
340 | 356 | | |
| |||
374 | 390 | | |
375 | 391 | | |
376 | 392 | | |
377 | | - | |
378 | | - | |
| 393 | + | |
| 394 | + | |
379 | 395 | | |
380 | 396 | | |
381 | 397 | | |
| |||
Large diffs are not rendered by default.
0 commit comments