{"ScriptPreparationCode":"var elementA = document.getElementById(\u0022foo\u0022);\r\nvar elementB = document.getElementById(\u0022bar\u0022);\r\nvar elementGroup = document.getElementById(\u0022group\u0022);\r\nvar elementGroup2d = document.getElementById(\u0022group2d\u0022);\r\nvar elementGroup3d = document.getElementById(\u0022group3d\u0022);","TestCases":[{"Name":"Singles - x/y attribute","Code":"var i = 10000;\r\nwhile (i--) {\r\n elementA.setAttribute(\u0022x\u0022, i);\r\n elementA.setAttribute(\u0022y\u0022, i);\r\n elementB.setAttribute(\u0022x\u0022, i);\r\n elementB.setAttribute(\u0022y\u0022, i);\r\n}","IsDeferred":false},{"Name":"Singles - translate \u0026 rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementA.setAttribute(\u0022transform\u0022, \u0060translate(${i}px, ${i}px) rotate(${i}deg)\u0060);\r\n \telementB.setAttribute(\u0022transform\u0022, \u0060translate(${i}px, ${i}px) rotate(${i}deg)\u0060);\r\n}","IsDeferred":false},{"Name":"Single - translate \u0026 rotate seperate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementA.setAttribute(\u0022transform\u0022, \u0060translateX(${i}px) translateY(${i}px) rotateZ(${i}deg)\u0060);\r\n \telementB.setAttribute(\u0022transform\u0022, \u0060translateX(${i}px) translateY(${i}px) rotateZ(${i}deg)\u0060);\r\n}","IsDeferred":false},{"Name":"Single - translate \u0026 rotate 3d","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementA.setAttribute(\u0022transform\u0022, \u0060translate3d(${i}px, ${i}px, 0px) rotate3d(0,0,1,${i}deg)\u0060);\r\n \telementB.setAttribute(\u0022transform\u0022, \u0060translate3d(${i}px, ${i}px, 0px) rotate3d(0,0,1,${i}deg)\u0060);\r\n}","IsDeferred":false},{"Name":"Group - translate \u0026 rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementGroup.setAttribute(\u0022transform\u0022, \u0060translate(${i}px, ${i}px) rotate(${i}deg)\u0060);\r\n}","IsDeferred":false},{"Name":"Group - translate \u0026 rotate seperate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementGroup.setAttribute(\u0022transform\u0022, \u0060translateX(${i}px) translateY(${i}px) rotateZ(${i}deg)\u0060);\r\n}","IsDeferred":false},{"Name":"Group - translate \u0026 rotate 3d","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementGroup.setAttribute(\u0022transform\u0022, \u0060translate3d(${i}px, ${i}px, 0px) rotate3d(0,0,1,${i}deg)\u0060);\r\n}","IsDeferred":false},{"Name":"Single - matrix with rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementA.setAttribute(\u0022transform\u0022, \u0060matrix(${i},${i},${i},${i},${i},${i})\u0060);\r\n \telementB.setAttribute(\u0022transform\u0022, \u0060matrix(${i},${i},${i},${i},${i},${i})\u0060);\r\n}","IsDeferred":false},{"Name":"Group - matrix with rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementGroup.setAttribute(\u0022transform\u0022, \u0060matrix(${i},${i},${i},${i},${i},${i})\u0060);\r\n}","IsDeferred":false},{"Name":"Single - matrix3d with rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementA.setAttribute(\u0022transform\u0022, \u0060matrix3d(${i},${i},0,${i},${i},0,${i},${i},1)\u0060);\r\n \telementB.setAttribute(\u0022transform\u0022, \u0060matrix3d(${i},${i},0,${i},${i},0,${i},${i},1)\u0060);\r\n}","IsDeferred":false},{"Name":"Group - matrix3d with rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementGroup.setAttribute(\u0022transform\u0022, \u0060matrix3d(${i},${i},0,${i},${i},0,${i},${i},1)\u0060);\r\n}","IsDeferred":false},{"Name":"Group - matrix2d direct with rotate","Code":"var i = 10000;\r\nwhile (i--) {\r\n var matrix2d = elementGroup2d.transform.baseVal.getItem(0).matrix;\r\n \tmatrix2d.a = i;\r\n \tmatrix2d.b = i;\r\n \tmatrix2d.c = i;\r\n \tmatrix2d.d = i;\r\n\tmatrix2d.e = i;\r\n \tmatrix2d.f = i;\r\n}","IsDeferred":false},{"Name":"Group - matrix2d set with style.transform","Code":"var i = 10000;\r\nwhile (i--) {\r\n\telementGroup.style.transform = \u0060matrix(${i},${i},${i},${i},${i},${i})\u0060;\r\n}","IsDeferred":false}]}