Skip to content

docs: pr review policy and report#9679

Draft
matthewkeil wants to merge 3 commits into
unstablefrom
mkeil/pr-review-policy
Draft

docs: pr review policy and report#9679
matthewkeil wants to merge 3 commits into
unstablefrom
mkeil/pr-review-policy

Conversation

@matthewkeil

Copy link
Copy Markdown
Member

Motivation

Way to help distribute the PR load a bit and document the process

@matthewkeil
matthewkeil requested review from nflaig and wemeetagain and removed request for nflaig July 18, 2026 16:01

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive Pull Request Review Policy (PR_REVIEWS.md) outlining guidelines for review assignments, SLAs, post-merge follow-ups, and a daily automated tracking report. Feedback on the proposal highlights several edge cases and technical improvements for the automation, including: addressing a flaw in the lastProcessedPr watermark that would miss newly undrafted PRs, correcting trailing commas in the JSON example, clarifying how holidays are programmatically excluded for a distributed team, and handling team-level review requests in the report grouping.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread PR_REVIEWS.md

### New-Since-Last-Run Detection

- **New PRs**: any PR with a number greater than the previous snapshot's `lastProcessedPr` watermark

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using a simple lastProcessedPr watermark based on the highest PR number seen will fail to detect newly undrafted PRs. Since draft PRs are excluded from snapshots (as stated in Section 11/Exclusions), a draft PR (e.g., #9683) will not update the watermark. If a subsequent non-draft PR (e.g., #9684) is processed, the watermark rises to 9684. When #9683 is later undrafted, its number is less than the watermark, so it will be missed.

Consider using the PR's createdAt or tracking the transition state (e.g., readyForReview events) to reliably detect newly active PRs.

Comment thread PR_REVIEWS.md
Comment on lines +117 to +131
{
"generatedAt": "2026-07-18T01:00:00Z",
"lastProcessedPr": 9682, // watermark: highest PR number seen
"openPrs": [
{
"number": 9679,
"title": "...",
"author": "...",
"createdAt": "...",
"reviewRequests": [{"reviewer": "...", "requestedAt": "..."}],
"reviews": [{"reviewer": "...", "submittedAt": "...", "state": "APPROVED", "requested": false}],
},
],
"closedPrs": [{"number": 9670, "author": "...", "createdAt": "...", "closedAt": "...", "merged": true}],
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The JSON example contains trailing commas (on lines 128 and 130). Since the schema specifies saving these files as standard .json files (e.g., review-metrics/YYYY-MM-DD.json), trailing commas will cause parsing errors in standard JSON parsers. It is best to use strictly compliant JSON in the documentation and output.

Suggested change
{
"generatedAt": "2026-07-18T01:00:00Z",
"lastProcessedPr": 9682, // watermark: highest PR number seen
"openPrs": [
{
"number": 9679,
"title": "...",
"author": "...",
"createdAt": "...",
"reviewRequests": [{"reviewer": "...", "requestedAt": "..."}],
"reviews": [{"reviewer": "...", "submittedAt": "...", "state": "APPROVED", "requested": false}],
},
],
"closedPrs": [{"number": 9670, "author": "...", "createdAt": "...", "closedAt": "...", "merged": true}],
}
{
"generatedAt": "2026-07-18T01:00:00Z",
"lastProcessedPr": 9682, // watermark: highest PR number seen
"openPrs": [
{
"number": 9679,
"title": "...",
"author": "...",
"createdAt": "...",
"reviewRequests": [{"reviewer": "...", "requestedAt": "..."}],
"reviews": [{"reviewer": "...", "submittedAt": "...", "state": "APPROVED", "requested": false}]
}
],
"closedPrs": [{"number": 9670, "author": "...", "createdAt": "...", "closedAt": "...", "merged": true}]
}

Comment thread PR_REVIEWS.md

## 3. Review SLA

- Only working days are counted for SLA. Weekends and holidays are excluded as non-working days

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Excluding holidays programmatically for a globally distributed team (with members in Asia, North America, etc.) can be highly complex and error-prone to automate.

Consider clarifying how holidays are defined (e.g., using a specific region's calendar, or a shared team calendar file in the repository), or simplify the automation to only exclude weekends to reduce maintenance overhead.

Comment thread PR_REVIEWS.md

1. **Past SLA review window**: review requests older than 2 business days (weekends and holidays excluded), listed as PR link/title plus requested reviewer. No ages, no ordering by lateness; just what is lagging. Empty section renders as "None"
2. **New review requests** (since the last run): PR link/title, author, requested reviewer(s)
3. **Open review requests by team member**: one list per person of the PRs currently waiting on them. The grouping is derived from whoever appears as a requested reviewer; there is no team roster to maintain

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

GitHub allows requesting reviews from Teams (e.g., @org/team-name) in addition to individual users. If the script groups requests solely by individual requested reviewers, team-level requests might either be missed, fail to resolve, or be listed under the team name rather than the individual members.

Consider specifying how team-level review requests should be handled or expanded in the report.

@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 5ae0c76 Previous: 27da921 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 814.87 us/op 1.2362 ms/op 0.66
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 39.286 us/op 39.670 us/op 0.99
BLS verify - blst 761.77 us/op 751.55 us/op 1.01
BLS verifyMultipleSignatures 3 - blst 1.3578 ms/op 1.3564 ms/op 1.00
BLS verifyMultipleSignatures 8 - blst 2.1606 ms/op 2.1595 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst 6.9064 ms/op 6.8164 ms/op 1.01
BLS verifyMultipleSignatures 64 - blst 13.189 ms/op 13.555 ms/op 0.97
BLS verifyMultipleSignatures 128 - blst 25.654 ms/op 25.874 ms/op 0.99
BLS deserializing 10000 signatures 635.04 ms/op 640.88 ms/op 0.99
BLS deserializing 100000 signatures 6.3494 s/op 6.3913 s/op 0.99
BLS verifyMultipleSignatures - same message - 3 - blst 795.67 us/op 804.75 us/op 0.99
BLS verifyMultipleSignatures - same message - 8 - blst 942.72 us/op 933.10 us/op 1.01
BLS verifyMultipleSignatures - same message - 32 - blst 1.5595 ms/op 1.5457 ms/op 1.01
BLS verifyMultipleSignatures - same message - 64 - blst 2.3329 ms/op 2.3648 ms/op 0.99
BLS verifyMultipleSignatures - same message - 128 - blst 4.0723 ms/op 4.0503 ms/op 1.01
BLS aggregatePubkeys 32 - blst 17.583 us/op 17.580 us/op 1.00
BLS aggregatePubkeys 128 - blst 63.151 us/op 62.618 us/op 1.01
getSlashingsAndExits - default max 46.572 us/op 54.658 us/op 0.85
getSlashingsAndExits - 2k 324.71 us/op 367.74 us/op 0.88
proposeBlockBody type=full, size=empty 643.67 us/op 638.74 us/op 1.01
isKnown best case - 1 super set check 171.00 ns/op 166.00 ns/op 1.03
isKnown normal case - 2 super set checks 170.00 ns/op 164.00 ns/op 1.04
isKnown worse case - 16 super set checks 166.00 ns/op 166.00 ns/op 1.00
validate api signedAggregateAndProof - struct 1.5274 ms/op 1.5062 ms/op 1.01
validate gossip signedAggregateAndProof - struct 1.5218 ms/op 1.5042 ms/op 1.01
batch validate gossip attestation - vc 640000 - chunk 32 105.70 us/op 106.35 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 64 92.421 us/op 92.630 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 128 85.609 us/op 86.025 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 256 82.073 us/op 82.400 us/op 1.00
bytes32 toHexString 296.00 ns/op 296.00 ns/op 1.00
bytes32 Buffer.toString(hex) 188.00 ns/op 161.00 ns/op 1.17
bytes32 Buffer.toString(hex) from Uint8Array 247.00 ns/op 233.00 ns/op 1.06
bytes32 Buffer.toString(hex) + 0x 190.00 ns/op 164.00 ns/op 1.16
Return object 10000 times 0.21280 ns/op 0.21090 ns/op 1.01
Throw Error 10000 times 3.3463 us/op 3.4511 us/op 0.97
toHex 101.80 ns/op 97.261 ns/op 1.05
Buffer.from 91.441 ns/op 88.599 ns/op 1.03
shared Buffer 78.691 ns/op 60.967 ns/op 1.29
fastMsgIdFn sha256 / 200 bytes 1.4800 us/op 1.4680 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 158.00 ns/op 152.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 200 bytes 208.00 ns/op 202.00 ns/op 1.03
fastMsgIdFn sha256 / 1000 bytes 4.7720 us/op 4.7630 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 253.00 ns/op 243.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 1000 bytes 258.00 ns/op 250.00 ns/op 1.03
fastMsgIdFn sha256 / 10000 bytes 42.035 us/op 41.697 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.2820 us/op 1.2710 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 838.00 ns/op 830.00 ns/op 1.01
send data - 1000 256B messages 4.0121 ms/op 4.1716 ms/op 0.96
send data - 1000 512B messages 5.1736 ms/op 5.1064 ms/op 1.01
send data - 1000 1024B messages 5.2671 ms/op 5.5459 ms/op 0.95
send data - 1000 1200B messages 6.2210 ms/op 6.0571 ms/op 1.03
send data - 1000 2048B messages 12.464 ms/op 15.662 ms/op 0.80
send data - 1000 4096B messages 36.997 ms/op 54.685 ms/op 0.68
send data - 1000 16384B messages 338.78 ms/op 262.20 ms/op 1.29
send data - 1000 65536B messages 1.0441 s/op 795.72 ms/op 1.31
enrSubnets - fastDeserialize 64 bits 732.00 ns/op 722.00 ns/op 1.01
enrSubnets - ssz BitVector 64 bits 278.00 ns/op 254.00 ns/op 1.09
enrSubnets - fastDeserialize 4 bits 104.00 ns/op 98.000 ns/op 1.06
enrSubnets - ssz BitVector 4 bits 280.00 ns/op 253.00 ns/op 1.11
prioritizePeers score -10:0 att 32-0.1 sync 2-0 202.00 us/op 200.23 us/op 1.01
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 229.66 us/op 228.56 us/op 1.00
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 339.81 us/op 338.72 us/op 1.00
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 615.17 us/op 593.40 us/op 1.04
prioritizePeers score 0:0 att 64-1 sync 4-1 696.53 us/op 688.85 us/op 1.01
array of 16000 items push then shift 1.2948 us/op 1.2873 us/op 1.01
LinkedList of 16000 items push then shift 7.0250 ns/op 6.8720 ns/op 1.02
array of 16000 items push then pop 66.272 ns/op 65.458 ns/op 1.01
LinkedList of 16000 items push then pop 5.9440 ns/op 5.8900 ns/op 1.01
array of 24000 items push then shift 1.9181 us/op 1.9002 us/op 1.01
LinkedList of 24000 items push then shift 6.6000 ns/op 6.5930 ns/op 1.00
array of 24000 items push then pop 91.859 ns/op 91.480 ns/op 1.00
LinkedList of 24000 items push then pop 5.9540 ns/op 5.8720 ns/op 1.01
intersect bitArray bitLen 8 4.8110 ns/op 4.7410 ns/op 1.01
intersect array and set length 8 29.429 ns/op 29.071 ns/op 1.01
intersect bitArray bitLen 128 24.177 ns/op 23.933 ns/op 1.01
intersect array and set length 128 502.46 ns/op 495.49 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 1.0770 us/op 1.0690 us/op 1.01
bitArray.getTrueBitIndexes() bitLen 248 1.7890 us/op 1.8740 us/op 0.95
bitArray.getTrueBitIndexes() bitLen 512 3.5770 us/op 3.7640 us/op 0.95
Full columns - reconstruct all 6 blobs 178.10 us/op 150.78 us/op 1.18
Full columns - reconstruct half of the blobs out of 6 83.912 us/op 93.882 us/op 0.89
Full columns - reconstruct single blob out of 6 35.504 us/op 51.702 us/op 0.69
Half columns - reconstruct all 6 blobs 375.47 ms/op 380.30 ms/op 0.99
Half columns - reconstruct half of the blobs out of 6 188.81 ms/op 189.97 ms/op 0.99
Half columns - reconstruct single blob out of 6 67.144 ms/op 66.915 ms/op 1.00
Set add up to 64 items then delete first 1.6505 us/op 1.6418 us/op 1.01
OrderedSet add up to 64 items then delete first 2.5326 us/op 2.5336 us/op 1.00
Set add up to 64 items then delete last 1.9048 us/op 1.8865 us/op 1.01
OrderedSet add up to 64 items then delete last 2.8009 us/op 2.7940 us/op 1.00
Set add up to 64 items then delete middle 1.9016 us/op 1.8804 us/op 1.01
OrderedSet add up to 64 items then delete middle 4.2793 us/op 4.3006 us/op 1.00
Set add up to 128 items then delete first 3.8118 us/op 3.7476 us/op 1.02
OrderedSet add up to 128 items then delete first 5.7681 us/op 5.7827 us/op 1.00
Set add up to 128 items then delete last 3.6842 us/op 3.7287 us/op 0.99
OrderedSet add up to 128 items then delete last 5.3822 us/op 5.5197 us/op 0.98
Set add up to 128 items then delete middle 3.6615 us/op 3.5942 us/op 1.02
OrderedSet add up to 128 items then delete middle 11.285 us/op 11.467 us/op 0.98
Set add up to 256 items then delete first 7.5728 us/op 7.6934 us/op 0.98
OrderedSet add up to 256 items then delete first 11.686 us/op 11.795 us/op 0.99
Set add up to 256 items then delete last 7.2939 us/op 7.1251 us/op 1.02
OrderedSet add up to 256 items then delete last 11.138 us/op 10.918 us/op 1.02
Set add up to 256 items then delete middle 7.3267 us/op 7.1051 us/op 1.03
OrderedSet add up to 256 items then delete middle 34.616 us/op 34.079 us/op 1.02
runFastConfirmationRules vc:100000 bc:96 eq:0 4.5050 ms/op 4.4876 ms/op 1.00
runFastConfirmationRules vc:600000 bc:96 eq:0 34.141 ms/op 33.985 ms/op 1.00
runFastConfirmationRules vc:1000000 bc:96 eq:0 56.815 ms/op 57.236 ms/op 0.99
runFastConfirmationRules vc:600000 bc:320 eq:0 33.865 ms/op 34.014 ms/op 1.00
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.0990 s/op 1.1447 s/op 0.96
pass gossip attestations to forkchoice per slot 2.5432 ms/op 2.6024 ms/op 0.98
forkChoice updateHead vc 100000 bc 64 eq 0 446.59 us/op 414.07 us/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 0 2.6675 ms/op 2.4896 ms/op 1.07
forkChoice updateHead vc 1000000 bc 64 eq 0 4.4495 ms/op 4.1295 ms/op 1.08
forkChoice updateHead vc 600000 bc 320 eq 0 2.6640 ms/op 2.4877 ms/op 1.07
forkChoice updateHead vc 600000 bc 1200 eq 0 2.7016 ms/op 2.4913 ms/op 1.08
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9891 ms/op 2.8884 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 1000 2.6996 ms/op 2.4493 ms/op 1.10
forkChoice updateHead vc 600000 bc 64 eq 10000 2.8058 ms/op 2.5434 ms/op 1.10
forkChoice updateHead vc 600000 bc 64 eq 300000 6.5783 ms/op 6.5508 ms/op 1.00
computeDeltas 1400000 validators 0% inactive 12.978 ms/op 12.187 ms/op 1.06
computeDeltas 1400000 validators 10% inactive 12.248 ms/op 11.618 ms/op 1.05
computeDeltas 1400000 validators 20% inactive 11.699 ms/op 10.978 ms/op 1.07
computeDeltas 1400000 validators 50% inactive 9.4704 ms/op 8.8811 ms/op 1.07
computeDeltas 2100000 validators 0% inactive 19.454 ms/op 18.362 ms/op 1.06
computeDeltas 2100000 validators 10% inactive 18.522 ms/op 17.647 ms/op 1.05
computeDeltas 2100000 validators 20% inactive 17.506 ms/op 16.526 ms/op 1.06
computeDeltas 2100000 validators 50% inactive 14.152 ms/op 11.024 ms/op 1.28
altair processAttestation - 250000 vs - 7PWei normalcase 1.6143 ms/op 1.6719 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei worstcase 2.3883 ms/op 2.4184 ms/op 0.99
altair processAttestation - setStatus - 1/6 committees join 103.52 us/op 103.86 us/op 1.00
altair processAttestation - setStatus - 1/3 committees join 196.75 us/op 195.30 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 285.27 us/op 283.62 us/op 1.01
altair processAttestation - setStatus - 2/3 committees join 360.31 us/op 364.24 us/op 0.99
altair processAttestation - setStatus - 4/5 committees join 499.49 us/op 504.04 us/op 0.99
altair processAttestation - setStatus - 100% committees join 592.60 us/op 603.02 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 3.0405 ms/op 2.9146 ms/op 1.04
altair processBlock - 250000 vs - 7PWei normalcase hashState 12.035 ms/op 11.875 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase 19.601 ms/op 19.820 ms/op 0.99
altair processBlock - 250000 vs - 7PWei worstcase hashState 39.278 ms/op 38.342 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3612 ms/op 1.2888 ms/op 1.06
phase0 processBlock - 250000 vs - 7PWei worstcase 17.011 ms/op 16.086 ms/op 1.06
altair processEth1Data - 250000 vs - 7PWei normalcase 290.81 us/op 297.18 us/op 0.98
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.5020 us/op 3.1990 us/op 1.09
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 20.303 us/op 20.926 us/op 0.97
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.5710 us/op 6.0180 us/op 0.93
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.5430 us/op 3.7990 us/op 0.93
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 88.860 us/op 93.085 us/op 0.95
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4103 ms/op 1.4107 ms/op 1.00
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8381 ms/op 1.8769 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8300 ms/op 1.8836 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7853 ms/op 3.7262 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0713 ms/op 2.0850 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9871 ms/op 4.0405 ms/op 0.99
Tree 40 250000 create 337.84 ms/op 310.29 ms/op 1.09
Tree 40 250000 get(125000) 96.093 ns/op 95.067 ns/op 1.01
Tree 40 250000 set(125000) 1.0235 us/op 1.0246 us/op 1.00
Tree 40 250000 toArray() 14.599 ms/op 9.0260 ms/op 1.62
Tree 40 250000 iterate all - toArray() + loop 9.1875 ms/op 9.2267 ms/op 1.00
Tree 40 250000 iterate all - get(i) 39.831 ms/op 34.305 ms/op 1.16
Array 250000 create 2.2605 ms/op 2.1658 ms/op 1.04
Array 250000 clone - spread 694.26 us/op 671.50 us/op 1.03
Array 250000 get(125000) 0.30000 ns/op 0.29500 ns/op 1.02
Array 250000 set(125000) 0.30600 ns/op 0.29600 ns/op 1.03
Array 250000 iterate all - loop 58.092 us/op 57.806 us/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 51.645 ms/op 61.007 ms/op 0.85
Array.fill - length 1000000 2.2407 ms/op 2.2202 ms/op 1.01
Array push - length 1000000 8.6508 ms/op 8.1796 ms/op 1.06
Array.get 0.20797 ns/op 0.20575 ns/op 1.01
Uint8Array.get 0.24934 ns/op 0.25414 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 11.319 ms/op 16.292 ms/op 0.69
altair processEpoch - mainnet_e81889 268.53 ms/op 261.18 ms/op 1.03
mainnet_e81889 - altair beforeProcessEpoch 23.212 ms/op 19.969 ms/op 1.16
mainnet_e81889 - altair processJustificationAndFinalization 6.1000 us/op 5.6180 us/op 1.09
mainnet_e81889 - altair processInactivityUpdates 3.5404 ms/op 3.4682 ms/op 1.02
mainnet_e81889 - altair processRewardsAndPenalties 20.726 ms/op 18.019 ms/op 1.15
mainnet_e81889 - altair processRegistryUpdates 567.00 ns/op 565.00 ns/op 1.00
mainnet_e81889 - altair processSlashings 143.00 ns/op 156.00 ns/op 0.92
mainnet_e81889 - altair processEth1DataReset 141.00 ns/op 146.00 ns/op 0.97
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7209 ms/op 1.1921 ms/op 1.44
mainnet_e81889 - altair processSlashingsReset 701.00 ns/op 746.00 ns/op 0.94
mainnet_e81889 - altair processRandaoMixesReset 1.1710 us/op 1.0950 us/op 1.07
mainnet_e81889 - altair processHistoricalRootsUpdate 141.00 ns/op 149.00 ns/op 0.95
mainnet_e81889 - altair processParticipationFlagUpdates 453.00 ns/op 432.00 ns/op 1.05
mainnet_e81889 - altair processSyncCommitteeUpdates 115.00 ns/op 104.00 ns/op 1.11
mainnet_e81889 - altair afterProcessEpoch 42.162 ms/op 43.315 ms/op 0.97
capella processEpoch - mainnet_e217614 825.52 ms/op 764.76 ms/op 1.08
mainnet_e217614 - capella beforeProcessEpoch 66.007 ms/op 55.580 ms/op 1.19
mainnet_e217614 - capella processJustificationAndFinalization 6.5040 us/op 5.4760 us/op 1.19
mainnet_e217614 - capella processInactivityUpdates 14.638 ms/op 12.299 ms/op 1.19
mainnet_e217614 - capella processRewardsAndPenalties 100.98 ms/op 91.491 ms/op 1.10
mainnet_e217614 - capella processRegistryUpdates 4.5570 us/op 4.4520 us/op 1.02
mainnet_e217614 - capella processSlashings 143.00 ns/op 147.00 ns/op 0.97
mainnet_e217614 - capella processEth1DataReset 136.00 ns/op 145.00 ns/op 0.94
mainnet_e217614 - capella processEffectiveBalanceUpdates 16.173 ms/op 5.7287 ms/op 2.82
mainnet_e217614 - capella processSlashingsReset 697.00 ns/op 721.00 ns/op 0.97
mainnet_e217614 - capella processRandaoMixesReset 1.1430 us/op 1.2290 us/op 0.93
mainnet_e217614 - capella processHistoricalRootsUpdate 140.00 ns/op 147.00 ns/op 0.95
mainnet_e217614 - capella processParticipationFlagUpdates 438.00 ns/op 434.00 ns/op 1.01
mainnet_e217614 - capella afterProcessEpoch 112.13 ms/op 110.10 ms/op 1.02
phase0 processEpoch - mainnet_e58758 294.49 ms/op 278.06 ms/op 1.06
mainnet_e58758 - phase0 beforeProcessEpoch 69.915 ms/op 54.040 ms/op 1.29
mainnet_e58758 - phase0 processJustificationAndFinalization 6.0160 us/op 5.6140 us/op 1.07
mainnet_e58758 - phase0 processRewardsAndPenalties 15.272 ms/op 15.257 ms/op 1.00
mainnet_e58758 - phase0 processRegistryUpdates 2.2950 us/op 4.4560 us/op 0.52
mainnet_e58758 - phase0 processSlashings 138.00 ns/op 144.00 ns/op 0.96
mainnet_e58758 - phase0 processEth1DataReset 136.00 ns/op 145.00 ns/op 0.94
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 960.07 us/op 826.43 us/op 1.16
mainnet_e58758 - phase0 processSlashingsReset 830.00 ns/op 828.00 ns/op 1.00
mainnet_e58758 - phase0 processRandaoMixesReset 1.0410 us/op 1.0910 us/op 0.95
mainnet_e58758 - phase0 processHistoricalRootsUpdate 139.00 ns/op 146.00 ns/op 0.95
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.0340 us/op 1.0110 us/op 1.02
mainnet_e58758 - phase0 afterProcessEpoch 33.345 ms/op 33.596 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0171 ms/op 1.0119 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6461 ms/op 1.7887 ms/op 0.92
altair processInactivityUpdates - 250000 normalcase 13.447 ms/op 10.632 ms/op 1.26
altair processInactivityUpdates - 250000 worstcase 10.614 ms/op 11.186 ms/op 0.95
phase0 processRegistryUpdates - 250000 normalcase 2.3130 us/op 2.3270 us/op 0.99
phase0 processRegistryUpdates - 250000 badcase_full_deposits 140.79 us/op 140.89 us/op 1.00
phase0 processRegistryUpdates - 250000 worstcase 0.5 58.283 ms/op 61.334 ms/op 0.95
altair processRewardsAndPenalties - 250000 normalcase 13.066 ms/op 15.776 ms/op 0.83
altair processRewardsAndPenalties - 250000 worstcase 12.796 ms/op 15.059 ms/op 0.85
phase0 getAttestationDeltas - 250000 normalcase 5.4188 ms/op 8.7563 ms/op 0.62
phase0 getAttestationDeltas - 250000 worstcase 5.4240 ms/op 8.6709 ms/op 0.63
phase0 processSlashings - 250000 worstcase 59.137 us/op 63.346 us/op 0.93
altair processSyncCommitteeUpdates - 250000 10.073 ms/op 10.235 ms/op 0.98
BeaconState.hashTreeRoot - No change 173.00 ns/op 174.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 59.221 us/op 71.694 us/op 0.83
BeaconState.hashTreeRoot - 32 full validator 768.28 us/op 859.62 us/op 0.89
BeaconState.hashTreeRoot - 512 full validator 6.0462 ms/op 6.1558 ms/op 0.98
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 71.057 us/op 83.298 us/op 0.85
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0592 ms/op 1.2731 ms/op 0.83
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.595 ms/op 14.652 ms/op 0.86
BeaconState.hashTreeRoot - 1 balances 56.255 us/op 63.223 us/op 0.89
BeaconState.hashTreeRoot - 32 balances 574.37 us/op 741.93 us/op 0.77
BeaconState.hashTreeRoot - 512 balances 4.7365 ms/op 4.7887 ms/op 0.99
BeaconState.hashTreeRoot - 250000 balances 109.03 ms/op 113.88 ms/op 0.96
aggregationBits - 2048 els - zipIndexesInBitList 20.116 us/op 20.060 us/op 1.00
regular array get 100000 times 23.118 us/op 23.476 us/op 0.98
wrappedArray get 100000 times 23.340 us/op 23.452 us/op 1.00
arrayWithProxy get 100000 times 10.636 ms/op 10.484 ms/op 1.01
ssz.Root.equals 21.684 ns/op 21.800 ns/op 0.99
byteArrayEquals 21.377 ns/op 21.544 ns/op 0.99
Buffer.compare 8.9100 ns/op 8.9100 ns/op 1.00
processSlot - 1 slots 9.1160 us/op 8.3360 us/op 1.09
processSlot - 32 slots 1.5617 ms/op 1.5354 ms/op 1.02
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 1.8301 ms/op 2.8076 ms/op 0.65
getCommitteeAssignments - req 1 vs - 250000 vc 1.6519 ms/op 1.6868 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 3.4062 ms/op 3.4555 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6571 ms/op 3.7030 ms/op 0.99
findModifiedValidators - 10000 modified validators 820.84 ms/op 757.44 ms/op 1.08
findModifiedValidators - 1000 modified validators 615.29 ms/op 520.40 ms/op 1.18
findModifiedValidators - 100 modified validators 325.97 ms/op 306.47 ms/op 1.06
findModifiedValidators - 10 modified validators 220.95 ms/op 258.46 ms/op 0.85
findModifiedValidators - 1 modified validators 165.27 ms/op 192.58 ms/op 0.86
findModifiedValidators - no difference 177.76 ms/op 157.70 ms/op 1.13
migrate state 1500000 validators, 3400 modified, 2000 new 2.7049 s/op 3.2322 s/op 0.84
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7800 ns/op 3.7600 ns/op 1.01
state getBlockRootAtSlot - 250000 vs - 7PWei 290.80 ns/op 283.09 ns/op 1.03
computeProposerIndex 100000 validators 1.3800 ms/op 1.4434 ms/op 0.96
getNextSyncCommitteeIndices 1000 validators 2.9084 ms/op 2.9166 ms/op 1.00
getNextSyncCommitteeIndices 10000 validators 25.509 ms/op 27.001 ms/op 0.94
getNextSyncCommitteeIndices 100000 validators 89.937 ms/op 89.673 ms/op 1.00
computeProposers - vc 250000 568.21 us/op 557.58 us/op 1.02
computeEpochShuffling - vc 250000 40.837 ms/op 40.495 ms/op 1.01
getNextSyncCommittee - vc 250000 9.6194 ms/op 9.5625 ms/op 1.01
nodejs block root to RootHex using toHex 99.649 ns/op 96.027 ns/op 1.04
nodejs block root to RootHex using toRootHex 64.417 ns/op 63.244 ns/op 1.02
nodejs fromHex(blob) 840.87 us/op 790.43 us/op 1.06
nodejs fromHexInto(blob) 637.21 us/op 635.07 us/op 1.00
nodejs block root to RootHex using the deprecated toHexString 508.64 ns/op 510.43 ns/op 1.00
nodejs byteArrayEquals 32 bytes (block root) 26.696 ns/op 26.455 ns/op 1.01
nodejs byteArrayEquals 48 bytes (pubkey) 38.467 ns/op 38.224 ns/op 1.01
nodejs byteArrayEquals 96 bytes (signature) 35.196 ns/op 35.431 ns/op 0.99
nodejs byteArrayEquals 1024 bytes 42.750 ns/op 45.413 ns/op 0.94
nodejs byteArrayEquals 131072 bytes (blob) 1.7849 us/op 1.7879 us/op 1.00
browser block root to RootHex using toHex 147.23 ns/op 146.84 ns/op 1.00
browser block root to RootHex using toRootHex 132.81 ns/op 132.88 ns/op 1.00
browser fromHex(blob) 1.6410 ms/op 1.6701 ms/op 0.98
browser fromHexInto(blob) 636.32 us/op 632.02 us/op 1.01
browser block root to RootHex using the deprecated toHexString 344.32 ns/op 350.01 ns/op 0.98
browser byteArrayEquals 32 bytes (block root) 28.385 ns/op 28.442 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 39.839 ns/op 40.033 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 75.056 ns/op 74.679 ns/op 1.01
browser byteArrayEquals 1024 bytes 765.32 ns/op 767.09 ns/op 1.00
browser byteArrayEquals 131072 bytes (blob) 96.697 us/op 96.522 us/op 1.00

by benchmarkbot/action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants