jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
<script src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.9.25/paper-full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.1.0/fabric.all.min.js"></script>
<div class='test'>
<div class='canvas'>
<canvas id='simple-paper' class='paper-size' resize></canvas>
<div id='log-simple-paper'></div>
</div>
<div class='canvas'>
<canvas id='simple-fabric'></canvas>
<div id='log-simple-fabric'></div>
</div>
</div>
<div class='test'>
<div class='canvas'>
<canvas id='image-paper' class='paper-size' resize></canvas>
<div id='log-image-paper'></div>
</div>
<div class='canvas'>
<canvas id='image-fabric'></canvas>
<div id='log-image-fabric'></div>
</div>
</div>
<div class='test'>
<div class='canvas'>
<canvas id='complex-paper' class='paper-size' resize></canvas>
<div id='log-complex-paper'></div>
</div>
<div class='canvas'>
<canvas id='complex-fabric'></canvas>
<div id='log-complex-fabric'></div>
</div>
</div>
<script>
paper.install(window);
function getRandomNum(num) {
return Math.floor((Math.random() * num) + 1);
}
function simplePaper() {
var logEl = document.getElementById('log-simple-paper');
var canvas = document.getElementById('simple-paper');
paper.setup(canvas);
for (var i = 100; i--; ) {
var ball = new Shape.Circle({
center: [getRandomNum(300), getRandomNum(300)],
radius: 20,
strokeColor: 'black',
fillColor: 'tomato'
});
}
}
function simpleFabric() {
var logEl = document.getElementById('log-simple-fabric');
var canvas = this.__canvas = new fabric.Element('simple-fabric', {
renderOnAddRemove: false,
stateful: false,
width: 350,
height: 350
}),
Circle = fabric.Circle;
for (var i = 100; i--; ) {
var c = new Circle({
radius: 20,
left: getRandomNum(300),
top: getRandomNum(300),
fill: 'yellow',
stroke: 'black'
});
c.hasControls = c.hasBorders = false;
canvas.add(c);
}
canvas.renderAll();
canvas.calcOffset();
}
function imagePaper() {
var logEl = document.getElementById('log-image-paper'),
canvas = document.getElementById('image-paper');
paper.setup(canvas);
for (var i = 1000; i--; ) {
var raster = new Raster({
source: '../dog.jpg',
position: new Point(getRandomNum(300), getRandomNum(300))
});
raster.scale(0.1, 0.1);
}
}
function imageFabric() {
var logEl = document.getElementById('log-image-fabric'),
canvas = this.__canvas = new fabric.Element('image-fabric', {
renderOnAddRemove: false,
stateful: false,
width: 350,
height: 350
});
for (var i = 100; i--; ) {
fabric.Image.fromURL('../dog.jpg', function(oImg) {
oImg.set('left', getRandomNum(300));
oImg.set('top', getRandomNum(300));
oImg.scale(0.1);
canvas.add(oImg);
});
}
canvas.renderAll();
canvas.calcOffset();
}
function complexPaper() {
var logEl = document.getElementById('log-complex-paper');
var canvas = document.getElementById('complex-paper');
paper.setup(canvas);
for (var i = 100; i--; ) {
var path = new Path.Star({
center: [getRandomNum(300), getRandomNum(300)],
points: 5,
radius1: 15,
radius2: 40,
fillColor: 'tomato',
strokeColor: 'black'
});
}
}
function complexFabric() {
var logEl = document.getElementById('log-complex-fabric'),
canvas = this.__canvas = new fabric.Element('complex-fabric', {
renderOnAddRemove: false,
stateful: false,
width: 350,
height: 350
});
for (var i = 1000; i--; ) {
var path = new fabric.Path('m221.89001,168.15955l22.53615,0l6.96384,-19.86229l6.96385,19.86229l22.53615,0l-18.2321,12.27543l6.9642,19.86229l-18.2321,-12.27576l-18.2321,12.27576l6.96421,-19.86229l-18.2321,-12.27543z', {
left: getRandomNum(300),
top: getRandomNum(300),
strokeWidth: 1,
fill: 'yellow',
stroke: 'black'
});
canvas.add(path);
}
canvas.renderAll();
canvas.calcOffset();
}
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
simple-paper |
| ready |
simple-fabric |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.