Created
August 11, 2021 21:10
-
-
Save drewminns/a834e876ce4f321ec0e94c7d84bb7638 to your computer and use it in GitHub Desktop.
Calculate CO2 from Bytes - Adapted from https://www.websitecarbon.com/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const KWG_PER_GB = 1.805 | |
const RETURNING_VISITOR_PERCENTAGE = 0.75 | |
const FIRST_TIME_VIEWING_PERCENTAGE = 0.25 | |
const PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD = 0.02 | |
const CARBON_PER_KWG_GRID = 475 | |
const CARBON_PER_KWG_RENEWABLE = 33.4 | |
const PERCENTAGE_OF_ENERGY_IN_DATACENTER = 0.1008 | |
const PERCENTAGE_OF_ENERGY_IN_TRANSMISSION_AND_END_USER = 0.8992 | |
const CO2_GRAMS_TO_LITRES = 0.5562 | |
export const getStatistics = (bytes: number) => { | |
const adjustedBytes = adjustDataTransfer(bytes) | |
const energy = energyConsumption(adjustedBytes) | |
const co2Grid = getCo2Grid(energy) | |
const co2Renewable = getCo2Renewable(energy) | |
return { | |
adjustedBytes, | |
energy, | |
co2: { | |
grid: { | |
grams: co2Grid, | |
litres: co2ToLitres(co2Grid), | |
}, | |
renewable: { | |
grams: co2Renewable, | |
litres: co2ToLitres(co2Renewable), | |
}, | |
}, | |
} | |
} | |
const adjustDataTransfer = (val: number): number => | |
val * RETURNING_VISITOR_PERCENTAGE + | |
PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD * val * FIRST_TIME_VIEWING_PERCENTAGE | |
const energyConsumption = (bytes: number): number => bytes * (KWG_PER_GB / 1073741824) | |
const getCo2Grid = (energy: number): number => energy * CARBON_PER_KWG_GRID | |
const getCo2Renewable = (energy: number): number => | |
energy * PERCENTAGE_OF_ENERGY_IN_DATACENTER * CARBON_PER_KWG_RENEWABLE + | |
(energy + PERCENTAGE_OF_ENERGY_IN_TRANSMISSION_AND_END_USER) * CARBON_PER_KWG_GRID | |
const co2ToLitres = (co2: number): number => co2 * CO2_GRAMS_TO_LITRES |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment