80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
const coolprop = require('./src/index.js');
|
|
|
|
// Function to generate random number between min and max
|
|
function getRandomNumber(min, max) {
|
|
return min + Math.random() * (max - min);
|
|
}
|
|
|
|
// Generate 1000 combinations of temperature and pressure
|
|
function generateCombinations(count) {
|
|
const combinations = [];
|
|
|
|
// For R744 (CO2), using realistic ranges from test files
|
|
// Temperature range: -40°F to 32°F
|
|
// Pressure range: 131 psig to 491 psig
|
|
for (let i = 0; i < count; i++) {
|
|
const temperature = getRandomNumber(-40, 32);
|
|
const pressure = getRandomNumber(131, 491);
|
|
|
|
combinations.push({
|
|
temperature,
|
|
pressure,
|
|
refrigerant: 'R744',
|
|
tempUnit: 'F',
|
|
pressureUnit: 'psig'
|
|
});
|
|
}
|
|
|
|
return combinations;
|
|
}
|
|
|
|
async function runBenchmark() {
|
|
console.log('Generating 1000 temperature and pressure combinations...');
|
|
const combinations = generateCombinations(1000);
|
|
console.log('Combinations generated.');
|
|
|
|
// Pre-initialize the library
|
|
console.log('Initializing library...');
|
|
await coolprop.init({
|
|
refrigerant: 'R744',
|
|
tempUnit: 'F',
|
|
pressureUnit: 'psig'
|
|
});
|
|
console.log('Library initialized.');
|
|
|
|
// Run benchmark
|
|
console.log('Starting benchmark...');
|
|
const startTime = performance.now();
|
|
|
|
const results = [];
|
|
for (let i = 0; i < combinations.length; i++) {
|
|
const result = await coolprop.calculateSuperheat(combinations[i]);
|
|
results.push(result);
|
|
|
|
// Show progress every 100 calculations
|
|
if ((i + 1) % 100 === 0) {
|
|
console.log(`Processed ${i + 1} / ${combinations.length} calculations`);
|
|
}
|
|
}
|
|
|
|
const endTime = performance.now();
|
|
const totalTime = endTime - startTime;
|
|
const avgTime = totalTime / combinations.length;
|
|
|
|
// Report results
|
|
console.log('\nBenchmark Results:');
|
|
console.log(`Total time: ${totalTime.toFixed(2)} ms`);
|
|
console.log(`Average time per calculation: ${avgTime.toFixed(2)} ms`);
|
|
console.log(`Calculations per second: ${(1000 / avgTime).toFixed(2)}`);
|
|
|
|
// Count success and error results
|
|
const successful = results.filter(r => r.type === 'success').length;
|
|
const failed = results.filter(r => r.type === 'error').length;
|
|
console.log(`\nSuccessful calculations: ${successful}`);
|
|
console.log(`Failed calculations: ${failed}`);
|
|
}
|
|
|
|
// Run the benchmark
|
|
runBenchmark().catch(error => {
|
|
console.error('Benchmark failed:', error);
|
|
});
|