Display UserBenchmark Old Effective Speed

Display old and new effective speeds side by side on UserBenchmark

当前为 2019-11-21 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name     Display UserBenchmark Old Effective Speed
// @author   quanzi
// @version  0.5
// @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
// ==/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?"<span class='caret caret-large' googl='true'></span>":"";
  effectiveDescription.innerHTML = speedName + caret
    + "<br>" + 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 + "% " + "<span class='percbar-comparison-header pc-ani' style='width:" + newDifference + "%' ></span>" + "<br>" + effectiveLeft.innerHTML;
    effectiveRight.innerHTML = "<br>" + effectiveRight.innerHTML;
  } else {
    newDifference = Math.round((right/left)*100)-100;
    effectiveRight.innerHTML = "+" + newDifference + "% " + "<span class='percbar-comparison-header pc-ani' style='width:" + newDifference + "%' ></span>" + "<br>" + effectiveRight.innerHTML;
    effectiveLeft.innerHTML = "<br>" + effectiveLeft.innerHTML;
  }
}

function modifySpeed(tableName, left, right) {
  var content = document.getElementById(tableName);
  var header = content.parentElement;
  
  var speedRight = header.getElementsByClassName("innercolright")[0];
  var speedLeft = header.getElementsByClassName("innercolleft")[0];
  
  var newDifference = 0;
  if (left > right) {
    newDifference = Math.round((left/right)*100)-100;
    speedLeft.innerHTML = "+" + newDifference + "% " + "<span class='percbar-comparison-header pc-ani' style='width:" + newDifference + "%' ></span>";
    speedRight.innerHTML = "";
  } else {
    newDifference = Math.round((right/left)*100)-100;
    speedRight.innerHTML = "+" + newDifference + "% " + "<span class='percbar-comparison-header pc-ani' style='width:" + newDifference + "%' ></span>";
    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]);
    
    modifySpeed("primaryavgtable", left1+left2+left4+left8+left64, right1+right2+right4+right8+right64);
    modifySpeed("primarytable", left1OC+left2OC+left4OC+left8OC+left64OC, right1OC+right2OC+right4OC+right8OC+right64OC);
  }
});