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://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
const has = Object.prototype.hasOwnProperty;
function find(iter, tar, key) {
for (key of iter.keys()) {
if (isEqual(key, tar)) return key;
}
}
function isEqualLite(a, b) {
var ctor, len;
if (a === b) return true;
if (a && b && (ctor = a.constructor) === b.constructor) {
if (ctor === Array) {
if ((len = a.length) === b.length) {
while (len-- && isEqualLite(a[len], b[len]));
}
return len === -1;
}
if (!ctor || typeof a === 'object') {
len = 0;
for (ctor in a) {
if (has.call(a, ctor) && ++len && !has.call(b, ctor)) return false;
if (!(ctor in b) || !isEqualLite(a[ctor], b[ctor])) return false;
}
return Object.keys(b).length === len;
}
}
return a !== a && b !== b;
}
function isEqual(a, b) {
var ctor, len, tmp;
if (a === b) return true;
if (a && b && (ctor = a.constructor) === b.constructor) {
if (ctor === Array) {
if ((len = a.length) === b.length) {
while (len-- && isEqual(a[len], b[len]));
}
return len === -1;
}
if (ctor === Set) {
if (a.size !== b.size) return false;
for (len of a) {
tmp = len;
if (tmp && typeof tmp === 'object') {
tmp = find(b, tmp);
if (!tmp) return false;
}
if (!b.has(tmp)) return false;
}
return true;
}
if (ctor === Map) {
if (a.size !== b.size) return false;
for (len of a) {
tmp = len[0];
if (tmp && typeof tmp === 'object') {
tmp = find(b, tmp);
if (!tmp) return false;
}
if (!isEqual(len[1], b.get(tmp))) return false;
}
return true;
}
if (!ctor || typeof a === 'object') {
len = 0;
for (ctor in a) {
if (has.call(a, ctor) && ++len && !has.call(b, ctor)) return false;
if (!(ctor in b) || !isEqual(a[ctor], b[ctor])) return false;
}
return Object.keys(b).length === len;
}
}
return a !== a && b !== b;
}
const obj = {
weldPath: {
id: '12507476135490790788',
start: {
pos: { x: -3805.80810546875, y: 973.0039672851562, z: 2052.06103515625 },
axis: { x: -0.17364817766693033, y: 0, z: -0.9848077530122081 },
correctionIds: [],
offsetFrameIn: null,
offsetFrameOut: { offsetX: { x: 0, y: 0, z: -1 }, offsetY: { x: 0, y: -1, z: 0 } }
},
segments: [
{
line: {
to: {
pos: { x: -3793.7961425781245, y: 973.0039672851562, z: 2052.06103515625 },
axis: { x: -0.17364817766693033, y: 0, z: -0.9848077530122081 },
correctionIds: [],
offsetFrameIn: { offsetX: { x: 0, y: 0, z: -1 }, offsetY: { x: 0, y: -1, z: 0 } },
offsetFrameOut: null
}
},
weldType: { butt: { penetration: { mm: 0 } }, isTackWeld: false, isArcStartMotion: false },
jointType: 'JOINT_EDGE',
plates: {
leftPlate: { orientation: { x: 0, y: 0, z: 1 }, thickness: { mm: 12.01196200000004 } },
rightPlate: {
orientation: { x: 0, y: 0.34202014332559266, z: 0.9396926207859361 },
thickness: { mm: 0 }
}
},
travelSpeed: null,
voltage: null,
pulsed: null,
weaving: null,
jobId: null,
sequenceId: null,
stickout: null
}
],
ancestorId: null,
gravity: null,
bounds: null,
alternatives: [],
nominalStickout: null,
readableId: { text: 'Weld #1' },
weldingParameters: [],
crater: null,
postIgnitionDelay: null
},
scene: {
chains: [
{
uuid: '3ad8a595-f68c-4277-ad83-fc8026892f85',
name: { text: 'Lascellen Produlas - Environment' },
homeConfig: {},
parentTChainRoot: {
m00: 1,
m01: 0,
m02: 0,
m03: 0,
m10: 0,
m11: 1,
m12: 0,
m13: 0,
m20: 0,
m21: 0,
m22: 1,
m23: 0,
m30: 0,
m31: 0,
m32: 0,
m33: 1
},
parent: null,
chain: {
rootJoint: {
uuid: 'f5a3aed8-cfb9-44db-b28a-5f19898524d3',
name: { text: 'Root' },
visualGeometry: {
model: {
uuid: 'd7cad275d88c3695699ab5601203b295',
name: { text: 'f5a3aed8-cfb9-44db-b28a-5f19898524d3' },
identityTag: { genericIdentity: 'IDENTITY_CLASS_ROBOT_TOOL' },
parentTThis: {
m00: 1,
m01: 0,
m02: 0,
m03: 0,
m10: 0,
m11: 1,
m12: 0,
m13: 0,
m20: 0,
m21: 0,
m22: 1,
m23: 0,
m30: 0,
m31: 0,
m32: 0,
m33: 1
},
children: [],
data: [
{
uuid: '1ecafdca5c4ccddb5e8883f5f7a11388',
data: {
'@type': 'type.googleapis.com/oqton.common.geometry.VisualisationData',
file: {
file: 'gs://t-alpha-arcnc/app/europe-west1/alpha/job/6629257edf41f1544ea59af0/outputs/uploads/ui/2024/4/24/15/30/5/917/176a7314-eabb-4a04-ac71-625b0e884eb5/Lascellen Produlas - Environment.drc',
tags: { etag: '42a6ac321f2a55ff831fd4c9ea9f91ce' }
},
fileType: 'FILE_TYPE_DRC',
parentTThis: null,
quality: 'QUALITY_VISUALISATION_HIGH_QUALITY',
textures: []
},
validityTags: null
},
{
uuid: '3efd02d32807cc350b13a9cfd5c76c5a',
data: {
'@type': 'type.googleapis.com/oqton.common.geometry.TriMeshData',
file: {
file: 'gs://t-alpha-arcnc/app/europe-west1/alpha/job/6629257edf41f1544ea59af0/outputs/uploads/ui/2024/4/24/15/30/5/917/176a7314-eabb-4a04-ac71-625b0e884eb5/Lascellen Produlas - Environment.stl',
tags: { etag: '131c5a0803f7c735652ce5fa3820a3a2' }
},
fileType: 'FILE_TYPE_STL',
parentTThis: null,
state: 'GEOMETRY_STATE_UNHEALED_SOLID',
metaData: {
surfaceArea: { mm2: 456938620.079149 },
volume: { mm3: 20541013493.12645 },
triangleCount: { value: 1024 },
vertexCount: { value: 510 }
},
textures: []
},
validityTags: null
},
{
uuid: '416135a5813987564ee3a1dcba3aa4f4',
data: {
'@type': 'type.googleapis.com/oqton.common.geometry.Cuboid',
sizeX: { mm: 7000 },
sizeY: { mm: 18000 },
sizeZ: { mm: 2600.0000000000055 },
parentTThis: {
m00: 1,
m01: 0,
m02: 0,
m03: 0,
m10: 0,
m11: 1,
m12: 0,
m13: 0,
m20: 0,
m21: 0,
m22: 1,
m23: 0,
m30: 1796.0000000000002,
m31: 5104,
m32: 508.00000000000273,
m33: 1
}
},
validityTags: null
}
],
persistentId: '4d43ff045ea5901674d5f70514b00967'
}
},
collisionGeometry: null
},
connectedJoints: [],
type: 'KINEMATIC_CHAIN_TYPE_UNKNOWN'
}
}
],
referenceConfigs: []
},
tool: {
chain: { text: '4542bfaf-8dbf-4372-a140-d98bec51a733' },
joint: { text: 'aaa0ea09-c249-4baa-a24d-88e6d211e891' }
},
weldPathPadding: [],
motionStrategies: {
strategies: [
{
weldPathModifications: {
weldPathId: '12507476135490790788',
modifications: [{ setTravelAngle: { section: null, value: { deg: -10 } } }]
},
score: { preferenceRank: 0 },
jointMotionStrategies: [
{
joint: {
chain: { text: '956f5e83-ca14-489f-a1a4-bbc38488b474' },
joint: { text: '2198f557-520a-4039-9af4-415bf4f08573' }
},
unconstrained: {}
},
{
joint: {
chain: { text: '7c9b2e7f-daac-4b60-8389-6e613cb1a130' },
joint: { text: '7de45e33-156f-4052-9a02-c29685663997' }
},
followLinearPath: { pathLengths: [], jointValuesRadMm: [0], jointValues: [] }
},
{
joint: {
chain: { text: '7c9b2e7f-daac-4b60-8389-6e613cb1a130' },
joint: { text: '93c6593c-cb94-4d9a-8227-ae4f5af38ae2' }
},
followLinearPath: { pathLengths: [], jointValuesRadMm: [0], jointValues: [] }
}
],
reference: null,
jointOrder: [],
sceneMotion: null,
coordinatedJoints: []
},
{
weldPathModifications: {
weldPathId: '12507476135490790788',
modifications: [{ reverse: {} }, { setTravelAngle: { section: null, value: { deg: -10 } } }]
},
score: { preferenceRank: 0 },
jointMotionStrategies: [
{
joint: {
chain: { text: '956f5e83-ca14-489f-a1a4-bbc38488b474' },
joint: { text: '2198f557-520a-4039-9af4-415bf4f08573' }
},
unconstrained: {}
},
{
joint: {
chain: { text: '7c9b2e7f-daac-4b60-8389-6e613cb1a130' },
joint: { text: '7de45e33-156f-4052-9a02-c29685663997' }
},
followLinearPath: { pathLengths: [], jointValuesRadMm: [0], jointValues: [] }
},
{
joint: {
chain: { text: '7c9b2e7f-daac-4b60-8389-6e613cb1a130' },
joint: { text: '93c6593c-cb94-4d9a-8227-ae4f5af38ae2' }
},
followLinearPath: { pathLengths: [], jointValuesRadMm: [0], jointValues: [] }
}
],
reference: null,
jointOrder: [],
sceneMotion: null,
coordinatedJoints: []
}
]
},
settings: {
collisionPadding: { mm: 15 },
taskToolNearPadding: { mm: 2.5 },
nominalStickout: { mm: 17 },
manipulatorStep: { deg: 45 }
},
weldingPositions: [
{
position: {
mainPosition: 'WELDING_POSITION_PA',
slope: { deg: 0 },
minimalSlope: null,
maximalSlope: null,
rotation: { deg: 0 },
minimalRotation: null,
maximalRotation: null
},
travelAngle: { deg: 0 }
}
],
shouldFixWeldDirection: false
};
const obj2 = {
weldPath: {
id: '12507476135490790788',
start: {
pos: { x: -3805.80810546875, y: 973.0039672851562, z: 2052.06103515625 },
axis: { x: -0.17364817766693033, y: 0, z: -0.9848077530122081 },
correctionIds: [],
offsetFrameIn: null,
offsetFrameOut: { offsetX: { x: 0, y: 0, z: -1 }, offsetY: { x: 0, y: -1, z: 0 } }
},
segments: [
{
line: {
to: {
pos: { x: -3793.7961425781245, y: 973.0039672851562, z: 2052.06103515625 },
axis: { x: -0.17364817766693033, y: 0, z: -0.9848077530122081 },
correctionIds: [],
offsetFrameIn: { offsetX: { x: 0, y: 0, z: -1 }, offsetY: { x: 0, y: -1, z: 0 } },
offsetFrameOut: null
}
},
weldType: { butt: { penetration: { mm: 0 } }, isTackWeld: false, isArcStartMotion: false },
jointType: 'JOINT_EDGE',
plates: {
leftPlate: { orientation: { x: 0, y: 0, z: 1 }, thickness: { mm: 12.01196200000004 } },
rightPlate: {
orientation: { x: 0, y: 0.34202014332559266, z: 0.9396926207859361 },
thickness: { mm: 0 }
}
},
travelSpeed: null,
voltage: null,
pulsed: null,
weaving: null,
jobId: null,
sequenceId: null,
stickout: null
}
],
ancestorId: null,
gravity: null,
bounds: null,
alternatives: [],
nominalStickout: null,
readableId: { text: 'Weld #1' },
weldingParameters: [],
crater: null,
postIgnitionDelay: null
},
scene: {
chains: [
{
uuid: '3ad8a595-f68c-4277-ad83-fc8026892f85',
name: { text: 'Lascellen Produlas - Environment' },
homeConfig: {},
parentTChainRoot: {
m00: 1,
m01: 0,
m02: 0,
m03: 0,
m10: 0,
m11: 1,
m12: 0,
m13: 0,
m20: 0,
m21: 0,
m22: 1,
m23: 0,
m30: 0,
m31: 0,
m32: 0,
m33: 1
},
parent: null,
chain: {
rootJoint: {
uuid: 'f5a3aed8-cfb9-44db-b28a-5f19898524d3',
name: { text: 'Root' },
visualGeometry: {
model: {
uuid: 'd7cad275d88c3695699ab5601203b295',
name: { text: 'f5a3aed8-cfb9-44db-b28a-5f19898524d3' },
identityTag: { genericIdentity: 'IDENTITY_CLASS_ROBOT_TOOL' },
parentTThis: {
m00: 1,
m01: 0,
m02: 0,
m03: 0,
m10: 0,
m11: 1,
m12: 0,
m13: 0,
m20: 0,
m21: 0,
m22: 1,
m23: 0,
m30: 0,
m31: 0,
m32: 0,
m33: 1
},
children: [],
data: [
{
uuid: '1ecafdca5c4ccddb5e8883f5f7a11388',
data: {
'@type': 'type.googleapis.com/oqton.common.geometry.VisualisationData',
file: {
file: 'gs://t-alpha-arcnc/app/europe-west1/alpha/job/6629257edf41f1544ea59af0/outputs/uploads/ui/2024/4/24/15/30/5/917/176a7314-eabb-4a04-ac71-625b0e884eb5/Lascellen Produlas - Environment.drc',
tags: { etag: '42a6ac321f2a55ff831fd4c9ea9f91ce' }
},
fileType: 'FILE_TYPE_DRC',
parentTThis: null,
quality: 'QUALITY_VISUALISATION_HIGH_QUALITY',
textures: []
},
validityTags: null
},
{
uuid: '3efd02d32807cc350b13a9cfd5c76c5a',
data: {
'@type': 'type.googleapis.com/oqton.common.geometry.TriMeshData',
file: {
file: 'gs://t-alpha-arcnc/app/europe-west1/alpha/job/6629257edf41f1544ea59af0/outputs/uploads/ui/2024/4/24/15/30/5/917/176a7314-eabb-4a04-ac71-625b0e884eb5/Lascellen Produlas - Environment.stl',
tags: { etag: '131c5a0803f7c735652ce5fa3820a3a2' }
},
fileType: 'FILE_TYPE_STL',
parentTThis: null,
state: 'GEOMETRY_STATE_UNHEALED_SOLID',
metaData: {
surfaceArea: { mm2: 456938620.079149 },
volume: { mm3: 20541013493.12645 },
triangleCount: { value: 1024 },
vertexCount: { value: 510 }
},
textures: []
},
validityTags: null
},
{
uuid: '416135a5813987564ee3a1dcba3aa4f4',
data: {
'@type': 'type.googleapis.com/oqton.common.geometry.Cuboid',
sizeX: { mm: 7000 },
sizeY: { mm: 18000 },
sizeZ: { mm: 2600.0000000000055 },
parentTThis: {
m00: 1,
m01: 0,
m02: 0,
m03: 0,
m10: 0,
m11: 1,
m12: 0,
m13: 0,
m20: 0,
m21: 0,
m22: 1,
m23: 0,
m30: 1796.0000000000002,
m31: 5104,
m32: 508.00000000000273,
m33: 1
}
},
validityTags: null
}
],
persistentId: '4d43ff045ea5901674d5f70514b00967'
}
},
collisionGeometry: null
},
connectedJoints: [],
type: 'KINEMATIC_CHAIN_TYPE_UNKNOWN'
}
}
],
referenceConfigs: []
},
tool: {
chain: { text: '4542bfaf-8dbf-4372-a140-d98bec51a733' },
joint: { text: 'aaa0ea09-c249-4baa-a24d-88e6d211e891' }
},
weldPathPadding: [],
motionStrategies: obj.motionStrategies,
settings: {
collisionPadding: { mm: 15 },
taskToolNearPadding: { mm: 2.5 },
nominalStickout: { mm: 17 },
manipulatorStep: { deg: 45 }
},
weldingPositions: [
{
position: {
mainPosition: 'WELDING_POSITION_PA',
slope: { deg: 0 },
minimalSlope: null,
maximalSlope: null,
rotation: { deg: 0 },
minimalRotation: null,
maximalRotation: null
},
travelAngle: { deg: 0 }
}
],
shouldFixWeldDirection: false
};
Ready to run.
Test | Ops/sec | |
---|---|---|
lodash |
| ready |
fast isEqualLite |
| ready |
fast isEqual |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.