stdlib-js / stdlib-js/stdlib

[RFC]: Update `@stdlib/assert/*` benchmarks to measure affirmative/negative test values

Đang mở
#1,148 12 bình luận 0 reaction 0 người được giao Xem trên GitHub
Accepted difficulty: 1 Good First Issue Help Wanted JavaScript priority: Low RFC
Ngôn ngữ chính
JavaScript
Star
6k
Fork
1.3k
Merge trung bình
1 ngày 3 giờ
Pull request đã merge (30 ngày)
611

Mô tả

Many of the benchmarks in [`@stdlib/assert/*`](https://github.com/stdlib-js/stdlib/blob/develop/lib/node_modules/%40stdlib/assert) measure performance of an "average" test case, meaning that test values are a mixture of values resulting in `true` and `false` values.

An example package having such benchmarks is [`@stdlib/assert/is-string`](https://github.com/stdlib-js/stdlib/blob/82ee4a5e90ee55bbb01c0977151ac5e8b25fbf10/lib/node_modules/%40stdlib/assert/is-string/benchmark/benchmark.js).

Preferably, we'd split benchmarks in separate positive/negative benchmark runs to have a better handle on performance depending on the input value type. While, for many assert packages, the difference is not likely to be significant, for others, the performance difference will be significant, as the assertion logic is more complex or may, in the attempt of robustness, perform various operations which are slow, such as walking the prototype chain or resolving a constructor name, etc. In these instances, having a more granular understanding of performance is useful, as downstream consumers can then make accommodations if such perf cliffs are undesired (e.g., when implementing dispatch logic and needing to resolve an input value's "type" before delegating to a specialized implementation).

An example package having benchmarks which are split into positive/negative test values is
[`@stdlib/assert/is-complex-like`](https://github.com/stdlib-js/stdlib/blob/develop/lib/node_modules/%40stdlib/assert/is-complex-like/benchmark/benchmark.js).

The request in this issue is to refactor any assertion packages which are not split into positive/negative test values to be similar to [`@stdlib/assert/is-complex-like`](https://github.com/stdlib-js/stdlib/blob/develop/lib/node_modules/%40stdlib/assert/is-complex-like/benchmark/benchmark.js).

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Compare the benchmark/benchmark.js files for @stdlib/assert/is-string and @stdlib/assert/is-complex-like to identify assertion packages whose inputs are still mixed. Refactor the applicable benchmarks to separate affirmative and negative test values, then run the relevant benchmark checks to confirm both cases are measured independently.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript
Lĩnh vực
performance, testing
Loại issue
Tái cấu trúc
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.