feat: add dce detection plugin #131
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds optional Dead Code Elimination (DCE) detection to help identify benchmarks that may be producing inaccurate results due to JIT optimization. When enabled, the system measures a baseline (empty function) and compares each benchmark against it to detect suspiciously fast benchmarks that may have been optimized away.
Motivation
When benchmarking JavaScript code, the JIT compiler can sometimes optimize away the actual work being measured, especially if:
This leads to misleading benchmark results where code appears to run much faster than it would in a real-world scenario.
Changes
New Plugin:
DeadCodeEliminationDetectionPlugindceThresholdoptionSuite Options
detectDeadCodeElimination(boolean, default:false) - Enable DCE detectiondceThreshold(number, default:10) - Threshold multiplier for warningsBehavior
V8NeverOptimizePluginis automatically disabled to allow V8 optimizations to occur naturallyopsmode (nottimemode) and when not using worker threadsTesting
DeadCodeEliminationDetectionPluginDocumentation
index.d.tsBreaking Changes
None - This is an opt-in feature that defaults to
false.