Skip to content

Commit 984b485

Browse files
committed
[rntuple] code optimization
1 parent de53d7e commit 984b485

1 file changed

Lines changed: 15 additions & 31 deletions

File tree

modules/rntuple.mjs

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -530,9 +530,8 @@ class RNTupleDescriptorBuilder {
530530
if (!isList)
531531
throw new Error('Cluster group frame is not a list frame');
532532

533-
const groupCount = reader.readU32(),
534-
535-
clusterGroups = [];
533+
const groupCount = reader.readU32();
534+
this.clusterGroups = [];
536535

537536
for (let i = 0; i < groupCount; ++i) {
538537
const recordStart = BigInt(reader.offset),
@@ -542,20 +541,11 @@ class RNTupleDescriptorBuilder {
542541
numClusters = reader.readU32(),
543542
pageListLength = reader.readU64(),
544543
// Locator method to get the page list locator offset
545-
pageListLocator = this._readLocator(reader),
546-
547-
group = {
548-
minEntry,
549-
entrySpan,
550-
numClusters,
551-
pageListLocator,
552-
pageListLength
553-
};
554-
clusterGroups.push(group);
544+
pageListLocator = this._readLocator(reader);
545+
this.clusterGroups.push({ minEntry, entrySpan, numClusters, pageListLocator, pageListLength });
555546
reader.seek(Number(recordStart + clusterRecordSize));
556547
}
557548
reader.seek(Number(startOffset - clusterGroupListSize));
558-
this.clusterGroups = clusterGroups;
559549
}
560550

561551
_readLocator(reader) {
@@ -586,38 +576,34 @@ class RNTupleDescriptorBuilder {
586576
clusterSummaryListSize = reader.readS64();
587577
if (clusterSummaryListSize >= 0)
588578
throw new Error('Expected a list frame for cluster summaries');
589-
const clusterSummaryCount = reader.readU32(),
590-
clusterSummaries = [];
579+
const clusterSummaryCount = reader.readU32();
580+
this.clusterSummaries = [];
591581

592582
for (let i = 0; i < clusterSummaryCount; ++i) {
593583
const recordStart = BigInt(reader.offset),
594584
clusterSummaryRecordSize = reader.readS64(),
595585
firstEntry = reader.readU64(),
596586
combined = reader.readU64(),
597-
flags = combined >> 56n;
587+
flags = combined >> 56n,
588+
numEntries = Number(combined & 0x00FFFFFFFFFFFFFFn);
598589
if (flags & 0x01n)
599590
throw new Error('Cluster summary uses unsupported sharded flag (0x01)');
600-
const numEntries = Number(combined & 0x00FFFFFFFFFFFFFFn);
601-
clusterSummaries.push({
602-
firstEntry,
603-
numEntries,
604-
flags
605-
});
591+
this.clusterSummaries.push({ firstEntry, numEntries, flags });
606592
reader.seek(Number(recordStart + clusterSummaryRecordSize));
607593
}
608594
reader.seek(Number(listStartOffset - clusterSummaryListSize));
609-
this.clusterSummaries = clusterSummaries;
610595
this._readNestedFrames(reader);
611596

612597
reader.readU64(); // checksumPagelist
613598
}
614599

615600
_readNestedFrames(reader) {
616-
const clusterPageLocations = [],
617-
numListClusters = reader.readS64();
601+
const numListClusters = reader.readS64(),
602+
numRecordCluster = reader.readU32();
618603
if (numListClusters >= 0)
619604
throw new Error('Expected list frame for clusters');
620-
const numRecordCluster = reader.readU32();
605+
606+
this.pageLocations = [];
621607

622608
for (let i = 0; i < numRecordCluster; ++i) {
623609
const outerListSize = reader.readS64();
@@ -659,10 +645,8 @@ class RNTupleDescriptorBuilder {
659645
});
660646
}
661647

662-
clusterPageLocations.push(columns);
648+
this.pageLocations.push(columns);
663649
}
664-
665-
this.pageLocations = clusterPageLocations;
666650
}
667651

668652
/** @summary Search field by name
@@ -1038,7 +1022,7 @@ class ReaderItem {
10381022
case kSplitInt16: decodeZigzag16(view); break;
10391023
case kSplitInt32: decodeZigzag32(view); break;
10401024
case kSplitInt64: decodeZigzag64(view); break;
1041-
};
1025+
}
10421026

10431027
this.views[page_indx] = view;
10441028
}

0 commit comments

Comments
 (0)