// ==UserScript== // @name Display UserBenchmark Old Effective Speed // @author quanzi // @version 0.6 // @description Display old and new effective speeds side by side on UserBenchmark // @grant none // @match https://cpu.userbenchmark.com/Compare/* // @require http://code.jquery.com/jquery-latest.js // @namespace https://greasyfork.org/users/76976 // @downloadURL https://update.greasyfork.icu/scripts/387963/Display%20UserBenchmark%20Old%20Effective%20Speed.user.js // @updateURL https://update.greasyfork.icu/scripts/387963/Display%20UserBenchmark%20Old%20Effective%20Speed.meta.js // ==/UserScript== function getBenchArray(tableName) { var tds = document.getElementById(tableName).getElementsByTagName("td"); var values = new Array(0); for(var i = 0; i < tds.length; i++){ var td = tds[i]; if (td.className == "comp-valuecell" && td.innerText.includes("Pts")) { var value = parseInt(td.innerText.replace(' Pts',''),10); values.push(value); } } return values; } function addMoreSpeed(speedName, left, right, addCaret) { var effectiveContent = document.getElementById("effectivespeedtable"); var effectiveHeader = effectiveContent.parentElement; var effectiveDescription = effectiveHeader.getElementsByClassName("compthcol comp-headercol")[0]; var caret = addCaret?"":""; effectiveDescription.innerHTML = speedName + caret + "
" + effectiveDescription.innerHTML; var effectiveRight = effectiveHeader.getElementsByClassName("innercolright")[0]; var effectiveLeft = effectiveHeader.getElementsByClassName("innercolleft")[0]; var newDifference = 0; if (left > right) { newDifference = Math.round((left/right)*100)-100; effectiveLeft.innerHTML = "+" + newDifference + "% " + "" + "
" + effectiveLeft.innerHTML; effectiveRight.innerHTML = "
" + effectiveRight.innerHTML; } else { newDifference = Math.round((right/left)*100)-100; effectiveRight.innerHTML = "+" + newDifference + "% " + "" + "
" + effectiveRight.innerHTML; effectiveLeft.innerHTML = "
" + effectiveLeft.innerHTML; } } function modifySpeed(tableName, newDifference) { var content = document.getElementById(tableName); var header = content.parentElement; var speedRight = header.getElementsByClassName("innercolright")[0]; var speedLeft = header.getElementsByClassName("innercolleft")[0]; if (newDifference > 0) { speedLeft.innerHTML = "+" + newDifference + "% " + ""; speedRight.innerHTML = ""; } else { speedRight.innerHTML = "+" + Math.abs(newDifference) + "% " + ""; speedLeft.innerHTML = ""; } } $(document).ready(function() { // Remove "Game Effective Fps" if exists var removeGameEffectiveSpeed = true; if (removeGameEffectiveSpeed) { var divEFps = document.getElementById("videotable"); if (divEFps != null) divEFps.parentElement.remove(); } // Move 64-Core Speeds to primary table var move64CoreToPrimary = true; // Set your preferred ratios here var ratio1 = 30; var ratio2 = 0; var ratio4 = 60; var ratio8 = 0; var ratio64 = 10; var values = getBenchArray("primaryavgtable"); var values2nd = getBenchArray("secondarytable"); var valuesOC = getBenchArray("primarytable"); var left1 = values[0], right1 = values[1], left1OC = valuesOC[0], right1OC = valuesOC[1]; var left2 = values[2], right2 = values[3], left2OC = valuesOC[2], right2OC = valuesOC[3]; var left4 = values[4], right4 = values[5], left4OC = valuesOC[4], right4OC = valuesOC[5]; var left8 = values[6], right8 = values[7], left8OC = valuesOC[6], right8OC = valuesOC[7]; var left64 = values2nd[2], right64 = values2nd[3], left64OC = values2nd[0], right64OC = values2nd[1]; var leftEffective = left1*ratio1 + left2*ratio2 + left4*ratio4 + left8*ratio8 + left64*ratio64; var rightEffective = right1*ratio1 + right2*ratio2 + right4*ratio4 + right8*ratio8 + right64*ratio64; var leftOCEffective = left1OC*ratio1 + left2OC*ratio2 + left4OC*ratio4 + left8OC*ratio8 + left64OC*ratio64; var rightOCEffective = right1OC*ratio1 + right2OC*ratio2 + right4OC*ratio4 + right8OC*ratio8 + right64OC*ratio64; // For debugging purposes //alert(leftEffective);alert(rightEffective); //alert(leftOCEffective);alert(rightOCEffective); document.getElementById("effectivespeedtable").parentElement.getElementsByClassName("compthcol comp-headercol")[0].innerText = "SC-Heavy Effective Speed"; addMoreSpeed("Balanced OC Effective Speed", leftOCEffective, rightOCEffective, false); addMoreSpeed("Balanced Effective Speed", leftEffective, rightEffective, true); if (move64CoreToPrimary) { var trs = document.getElementById("secondarytable").getElementsByTagName("tr"); document.getElementById("primaryavgtable").getElementsByTagName("tbody")[0].append(trs[trs.length-1]); document.getElementById("primarytable").getElementsByTagName("tbody")[0].append(trs[trs.length-1]); // Recalculating // "Wrong" formula, it's not actually based on the difference between total points... //modifySpeed("primaryavgtable", left1+left2+left4+left8+left64, right1+right2+right4+right8+right64); //modifySpeed("primarytable", left1OC+left2OC+left4OC+left8OC+left64OC, right1OC+right2OC+right4OC+right8OC+right64OC); // ...but on the average difference of each point category var avgDifference = Math.round((Math.round(100*(left1>right1?(left1/right1-1):-(right1/left1-1))) + Math.round(100*(left2>right2?(left2/right2-1):-(right2/left2-1))) + Math.round(100*(left4>right4?(left4/right4-1):-(right4/left4-1))) + Math.round(100*(left8>right8?(left8/right8-1):-(right8/left8-1))) + Math.round(100*(left64>right64?(left64/right64-1):-(right64/left64-1))))/5); //alert(avgDifference); var avgOCDifference = Math.round((Math.round(100*(left1OC>right1OC?(left1OC/right1OC-1):-(right1OC/left1OC-1))) + Math.round(100*(left2OC>right2OC?(left2OC/right2OC-1):-(right2OC/left2OC-1))) + Math.round(100*(left4OC>right4OC?(left4OC/right4OC-1):-(right4OC/left4OC-1))) + Math.round(100*(left8OC>right8OC?(left8OC/right8OC-1):-(right8OC/left8OC-1))) + Math.round(100*(left64OC>right64OC?(left64OC/right64OC-1):-(right64OC/left64OC-1))))/5); //alert(avgOCDifference); modifySpeed("primaryavgtable", avgDifference); modifySpeed("primarytable", avgOCDifference); } });