Skip to content

Instantly share code, notes, and snippets.

@worldspawn
Last active August 29, 2015 14:22
Show Gist options
  • Save worldspawn/7dc499f5b0999183ee85 to your computer and use it in GitHub Desktop.
Save worldspawn/7dc499f5b0999183ee85 to your computer and use it in GitHub Desktop.
Compare 9 series cards for a 4k setup
GTX 970 (x3) - $1677
Total Ram --- 12, Total Cores - 4992, Total GigaTexels/s - 327, Total Watts - 435
(Scaled) --- GigaTexels/s - 250, GTS/Watt - 0.57, GTS/$ - 0.15
Value Score --- 1.02
GTX 980 (x2) - $1558
Total Ram --- 8, Total Cores - 4096, Total GigaTexels/s - 288, Total Watts - 330
(Scaled) --- GigaTexels/s - 274, GTS/Watt - 0.83, GTS/$ - 0.18
Value Score --- 1.16
GTX 980 Ti (x2) - $2198
Total Ram --- 12, Total Cores - 5632, Total GigaTexels/s - 352, Total Watts - 500
(Scaled) --- GigaTexels/s - 334, GTS/Watt - 0.67, GTS/$ - 0.15
Value Score --- 1.22
GTX Titan X (x2) - $3058
Total Ram --- 24, Total Cores - 6144, Total GigaTexels/s - 384, Total Watts - 500
(Scaled) --- GigaTexels/s - 365, GTS/Watt - 0.73, GTS/$ - 0.12
Value Score --- 2.09
(function () {
'use strict';
function CardProfile(name, price, cores, baseClock, gts, ram, watts) {
this.name = name;
this.price = price;
this.cores = cores;
this.baseClock = baseClock;
this.gts = gts;
this.ram = ram;
this.watts = watts;
}
function CardResult(cardProfile, noCards) {
this.cardProfile = cardProfile;
this.noCards = noCards;
}
CardResult.prototype = {
getCost: function () {
return this.getValue(this.cardProfile.price);
},
getWatts: function () {
return this.getValue(this.cardProfile.watts);
},
getRam: function () {
return this.getValue(this.cardProfile.ram);
},
getCores: function () {
return this.getValue(this.cardProfile.cores);
},
getGts: function (scaling) {
return this.getValue(this.cardProfile.gts, scaling);
},
getGtsPerWatt: function (scaling) {
return this.getGts(scaling) / this.getWatts();//returns gts per watt - higher is better
},
getGtsPerDollar: function (scaling) {
return this.getGts(scaling) / this.getCost();//returns gts per dollar - higher is better
},
getScore: function () {
var gtsDollar = this.getGtsPerDollar(true);
var gtsWatts = this.getGtsPerWatt(true);
var ram = this.getRam(true);
return gtsDollar * gtsWatts * ram;
},
getValue: function (value, scaled) {
if (scaled) {
var output = 0;
for (var i = 1; i <= this.noCards; i++) {
output += value * this.getCardNoModifier(i);
}
return output;
}
else {
return this.noCards * value;
}
},
getCardNoModifier: function (val) {
switch (val) {
case 1 : return 1;
case 2 : return 0.9;
case 3 : return 0.39
}
return 0;
}
}
var gtx970 = {card: new CardProfile('GTX 970', 559, 1664, 1050, 109, 4, 145), amount: 3};
var gtx980 = {card: new CardProfile('GTX 980', 779, 2048, 1126, 144, 4, 165), amount: 2};
var gtx980ti = {card: new CardProfile('GTX 980 Ti', 1099, 2816, 1000, 176, 6, 250), amount: 2};
var gtxTitanX = {card: new CardProfile('GTX Titan X', 1529, 3072, 1000, 192, 12, 250), amount: 2};
var cards = [gtx970, gtx980, gtx980ti, gtxTitanX];
for(var i = 0; i < cards.length; i++) {
var data = new CardResult(cards[i].card, cards[i].amount);
console.log('%s (x%d) - $%d', cards[i].card.name, cards[i].amount, data.getCost());
console.log('\tTotal Ram --- %d, Total Cores - %d, Total GigaTexels/s - %d, Total Watts - %d', data.getRam(), data.getCores(), data.getGts(), data.getWatts());
console.log('\t(Scaled) --- GigaTexels/s - %d, GTS/Watt - %d, GTS/$ - %d', Math.round(data.getGts(true)), (Math.round(data.getGtsPerWatt(true) * 100) / 100), (Math.round(data.getGtsPerDollar(true) * 100) / 100));
console.log('\tValue Score --- %d\n', (Math.round(data.getScore() * 100) / 100));
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment