<svg className="container" xmlns="http://www.w3.org/2000/svg" style="position: absolute; width: 0; height: 0" width="0" height="0">
<defs>
<symbol id="umbrella" viewBox="0 0 32 32">
<circle cx="12" cy="12" r="8" />
</symbol>
</defs>
</svg>
<script src="https://unpkg.com/react@16/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js" crossorigin></script>
<div id="main"></div>
var SVGInline = function() {
return React.createElement(
"svg",
{ className: "office", xmlns: "http://www.w3.org/2000/svg", width: 190, height: 190, viewBox: "0 0 188.5 188.5",
dangerouslySetInnerHTML: {
__html: '<path d="M27 14h5c0-1.105-1.119-2-2.5-2s-2.5 0.895-2.5 2v0zM27 14c0-1.105-1.119-2-2.5-2s-2.5 0.895-2.5 2c0-1.105-1.119-2-2.5-2s-2.5 0.895-2.5 2v0 14c0 1.112-0.895 2-2 2-1.112 0-2-0.896-2-2.001v-1.494c0-0.291 0.224-0.505 0.5-0.505 0.268 0 0.5 0.226 0.5 0.505v1.505c0 0.547 0.444 0.991 1 0.991 0.552 0 1-0.451 1-0.991v-14.009c0-1.105-1.119-2-2.5-2s-2.5 0.895-2.5 2c0-1.105-1.119-2-2.5-2s-2.5 0.895-2.5 2c0-1.105-1.119-2-2.5-2s-2.5 0.895-2.5 2c0-5.415 6.671-9.825 15-9.995v-1.506c0-0.283 0.224-0.499 0.5-0.499 0.268 0 0.5 0.224 0.5 0.499v1.506c8.329 0.17 15 4.58 15 9.995h-5z"></path>'
}
},
);
}
var DivTest = function() {
return React.createElement(
"div",
{ className: "office", width: 190, height: 190, borderRadius: '50%', background: 'red' },
"Foo"
);
}
ReactDOM.render(React.createElement(SVGInline, null), document.querySelector("#main"));
ReactDOM.render(React.createElement(DivTest, null), document.querySelector("#main"));
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
Inline SVG | |
Div |
Test name | Executions per second |
---|---|
Inline SVG | 319281.6 Ops/sec |
Div | 335861.0 Ops/sec |
Let's break down the benchmark and its options.
Benchmark Description
The benchmark is designed to compare the performance of two approaches: rendering an SVG element using React.createElement
with an inline SVG string, and rendering a div
element with a red background and a circle inside it. The goal is to determine which approach is faster.
Options Compared
React.createElement
with an inline SVG string. The SVG string is defined in the JavaScript code using the dangerouslySetInnerHTML
property.div
element with a red background and a circle inside it, but without using any libraries or frameworks.Pros and Cons
Library Used
The benchmark uses React, a popular JavaScript library for building user interfaces. In this case, React is used to create React elements, which are then rendered using ReactDOM.render
.
Special JS Feature or Syntax
None mentioned in the provided code.
Other Considerations
When choosing between these two approaches, consider the following factors:
Alternatives
If you're not using React or want to explore other options, here are some alternatives:
canvas
element to render SVG content. This might offer better performance than the inline SVG approach.<svg>
element directly without any libraries or frameworks.Keep in mind that each of these alternatives has its own trade-offs and might not offer the same level of flexibility as React's inline SVG approach.