Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
RXJS vs Vanilla v7.5.6 v2
(version: 0)
Comparing performance of:
RXJS vs Vanilla
Created:
3 years ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<script src="https://d3js.org/d3.v5.min.js"></script> <script src='https://unpkg.com/rxjs@7.5.6/dist/bundles/rxjs.umd.min.js'></script>
Script Preparation code:
var rawdata = [{"rect":{"y":80.39215686274508,"width":79.10307898259705,"height":17.64705882352941},"value":5909,"label":{"value":"2020-01-27 15:52:39.000","x":39.55153949129853,"y":89.21568627450979}},{"rect":{"y":60.784313725490186,"width":104.99330655957162,"height":17.64705882352941},"value":7843,"label":{"value":"2019-11-11 20:55:13.000","x":52.49665327978581,"y":69.60784313725489}},{"rect":{"y":41.17647058823529,"width":107.1619812583668,"height":17.64705882352941},"value":8005,"label":{"value":"2020-04-14 18:29:52.000","x":53.5809906291834,"y":49.99999999999999}},{"rect":{"y":21.56862745098039,"width":137.46987951807228,"height":17.64705882352941},"value":10269,"label":{"value":"2020-01-22 15:48:25.000","x":68.73493975903614,"y":30.392156862745097}},{"rect":{"y":1.9607843137254903,"width":270,"height":17.64705882352941},"value":20169,"label":{"value":"2020-01-03 19:09:13.000","x":135,"y":10.784313725490195}}]; var x = d3.scaleLinear().range([0, 300]); var y = d3.scaleBand().range([250, 0]).padding(0.1);
Tests:
RXJS
let { from, Observable } = rxjs; let { flatMap, map, tap, toArray } = rxjs.operators; var data$ = from(rawdata) .pipe( toArray(), map(values => values.sort((a, b) => b.value - a.value)), map(values => values.slice(0, 5)), tap((values) => { x = x.domain([0, d3.max(values, d => d.value)]); y = y.domain(values.map((d) => d.label)); }), flatMap(values => values), map(bar => ({ rect: { y: y(bar.label), width: x(bar.value), height: y.bandwidth() }, value: bar.value, label: { value: bar.label, x: x(bar.value) <= 300 / 5 ? x(bar.value) + 10 : x(bar.value) / 2, y: y(bar.label) + y.bandwidth() / 2 } })), toArray() ); let data; data$.subscribe(d => data = d);
Vanilla
let values = rawdata.sort((a, b) => a.value - b.value).slice(0, 5); // Set x and y values x = x.domain([0, d3.max(values, d => d.value)]); y = y.domain(values.map((d) => d.label)); // Set bars on chartmap var data = values.map(bar => ({ rect: { y: y(bar.label), width: x(bar.value), height: y.bandwidth() }, value: bar.value.toString(), label: { value: bar.label, x: x(bar.value) <= 300 / 5 ? x(bar.value) + 10 : x(bar.value) / 2, y: y(bar.label) + y.bandwidth() / 2 } }))
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
RXJS
Vanilla
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
Measuring the performance of JavaScript microbenchmarks can be a complex task, as it involves understanding various optimization techniques and trade-offs. **Benchmark Definition:** The benchmark definition compares two approaches to process data for visualization: RXJS (Reactive Extensions for JavaScript) and Vanilla (native JavaScript). **Options Compared:** 1. **RXJS:** Uses the Reactive Extensions library to handle data processing, mapping, and filtering. * Pros: + Abstraction layer: RXJS provides a high-level abstraction, making it easier to process complex data pipelines. + Compositionality: RXJS operators are composable, allowing for modular and reusable code. * Cons: + Overhead: RXJS introduces additional overhead due to the library's complexity and virtual DOM implementation. 2. **Vanilla:** Uses native JavaScript functions (e.g., `sort`, `map`, `slice`) for data processing. * Pros: + Lightweight: Vanilla code has minimal overhead, as it only uses built-in JavaScript functions. * Cons: + Low-level: Vanilla code requires manual management of data structures and pipeline composition. **Trade-offs:** When choosing between RXJS and Vanilla, consider the trade-offs: * **Performance:** Vanilla is likely to be faster due to its lower overhead. However, the performance difference may not be significant for small datasets. * **Complexity:** RXJS provides a higher-level abstraction, making it easier to manage complex data pipelines. This comes at the cost of additional complexity and potential overhead. **Library:** In this benchmark, `d3` (Data-Driven Documents) is used as a visualization library. `d3` provides functions for creating and manipulating SVG elements, which are used to render the chart. **Special JS Feature/Syntax:** None mentioned in the provided code snippets. **Other Alternatives:** * **Preact:** A lightweight alternative to React, similar to how RXJS is a lightweight alternative to vanilla JavaScript. * **Lodash:** A utility library that provides a set of functional programming helpers, similar to RXJS operators. * **JQuery:** A popular JavaScript library for DOM manipulation and event handling. In conclusion, the choice between RXJS and Vanilla depends on your specific use case and priorities. If you need to process complex data pipelines with ease and are willing to accept some performance overhead, RXJS might be a good choice. For smaller datasets or situations where lightweight code is crucial, Vanilla could be the better option.
Related benchmarks:
RXJS vs Vanilla
RXJS vs Vanilla v7.5.6
RXJS 7.8.0 vs Vanilla
RXJS (7.8.0) vs Vanilla
RXJS 6 vs Vanilla #2
Comments
Confirm delete:
Do you really want to delete benchmark?