pchce 0.0.9

dotnet add package pchce --version 0.0.9
                    
NuGet\Install-Package pchce -Version 0.0.9
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="pchce" Version="0.0.9" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="pchce" Version="0.0.9" />
                    
Directory.Packages.props
<PackageReference Include="pchce" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add pchce --version 0.0.9
                    
#r "nuget: pchce, 0.0.9"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package pchce@0.0.9
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=pchce&version=0.0.9
                    
Install as a Cake Addin
#tool nuget:?package=pchce&version=0.0.9
                    
Install as a Cake Tool

PCHCE(Personal Computer Hardware Component Evaluator)

This library provides simple evaluation of hardware components, so it can be used for ranking systems, comparing hardware components. It can be used in various applications, such as PC building websites, hardware review platforms etc.

Table of Contents

Installation

You can install the library via NuGet Package Manager or .NET CLI.


Features

  • Evaluate CPU, GPU, RAM, motherboard, storage devices, pc cases, power supplies, and cooling systems, based on their specifications.
  • Lightweight and fast.
  • No external dependencies.

Components

The library includes the following component models in the Core.Components namespace. Each class represents a specific hardware component with relevant properties:

  • CPU: Central Processing Unit (Cores, Threads, Clock Speeds, Cache).
  • GPU: Graphics Processing Unit (Cores, VRAM Capacity, Frequency, Interface).
  • RAM: Random Access Memory (Speed, Voltage, Latency, XMP/Expo support).
  • Motherboard: Main circuit board (PCIe Version, Max Memory Capacity).
  • Storage: Storage devices (Read/Write Speed, NVMe/SSD/HDD flags).
  • PowerSupply: Power Supply Unit (Watts, Efficiency).
  • Cooler: CPU Cooler (RPM, CFM, Air/Liquid).
  • Fan: Case Fan (RPM, CFM).
  • Case: PC Case chassis.

RankEvaluator

The Core.RankEvaluator class provides methods to evaluate and rank components on a scale of 0 to 100 based on their basic performance characteristics.

How it works

The evaluator calculates a score by normalizing key performance metrics against a baseline "high-end" reference value.

  • 0: Represents the lowest possible score.
  • 100: Represents the highest possible score (top-tier performance).

Each component type has a specific ranking method:

  • RankCpu(CPU cpu)
  • RankGpu(GPU gpu)
  • RankRam(RAM ram)
  • RankMotherboard(Motherboard motherboard)
  • RankStorage(Storage storage)
  • RankPsu(PowerSupply psu)
  • RankCooler(Cooler cooler)
  • RankFan(Fan fan)

Usage Examples

<details> <summary>### 1. Ranking a CPU(click to view example)</summary>

var evaluator = new RankEvaluator();
var myCpu = new CPU
{
    Name = "CPU",
    Cores = 16,
    Threads = 32,
    BaseClockGhz = 3.5,
    TurboClockGhz = 5.5,
    CacheSize = 64
};

double cpuScore = evaluator.RankCpu(myCpu);
Console.WriteLine($"CPU Score: {cpuScore:F2} / 100");

</details>

<details> <summary>### 2. Ranking a GPU(click to view example)</summary>

var evaluator = new RankEvaluator();
var myGpu = new GPU
{
    Cores = 16384,
    Capacity = 24,
    Frequency = 2500,
    Interface = 384,
    HasCuda = true
};

double gpuScore = evaluator.RankGpu(myGpu);
if (gpuScore >= 90) Console.WriteLine("Top-tier!");

</details>

<details> <summary>### 3. Ranking Storage(click to view example)</summary>

var evaluator = new RankEvaluator();
var mySsd = new Storage
{
    ReadSpeed = 7000,
    WriteSpeed = 6000,
    StorageType = StorageType.Nvme
};

double storageScore = evaluator.RankStorage(mySsd);
Console.WriteLine($"Storage Score: {storageScore:F2}");

</details>

<details> <summary>### 4. Ranking Power Supply[API Call](click to view example)</summary>

/// Assumes a POST endpoint at `/api/rank/psu` that accepts a JSON body
/// like `{ "efficiencyRating": "80 Plus Gold", "wattage": 750 }`
/// and returns a JSON response like `{ "score": 85.5 }`.
///
public class PsuRequest
{
    public int Wattage { get; set; }
    public string EfficiencyRating { get; set; }
}

public class PsuResponse
{
    public double Score { get; set; }
}

public async Task RankPsuViaApi()
{
    using var client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:5000/");

    var psuData = new PsuRequest
    {
        Name = "Power Supply",
        EfficiencyRating = 90,
        Wattage = 1050
    };

    var jsonContent = JsonSerializer.Serialize(psuData);
    var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
    var response = await client.PostAsync("api/rank/psu", content);
    response.EnsureSuccessStatusCode(); 
    var jsonResponse = await response.Content.ReadAsStringAsync();
    var psuResult = JsonSerializer.Deserialize<PsuResponse>(jsonResponse);

    Console.WriteLine($"API-ranked PSU Score: {psuResult.Score:F2}");
    if (psuResult.Score >= 90) Console.WriteLine("Top-tier!");
}

</details>

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.9 11,552 3/11/2026