跳转至

example/base/system/example_cpu_info.cpp

Functions

Name
int main()

Functions Documentation

function main

int main()

Source code

#include "system/cpu/cfcpu.h"
#include "system/cpu/cfcpu_bonus.h"
#include "system/cpu/cfcpu_profile.h"
#include <iostream>

using namespace cf;

int main() {
    // Main Actions
    auto cpuInfoQuery = getCPUInfo();
    if (!cpuInfoQuery.has_value()) {
        std::cerr << "Welp, Failed to query cpu info" << (int)cpuInfoQuery.error() << "\n";
    }

    std::cout << "Get the CPU Info: \n"
              << "\t" << std::string{cpuInfoQuery->arch} << "\n"
              << "\t" << std::string{cpuInfoQuery->manufacturer} << "\n"
              << "\t" << std::string{cpuInfoQuery->model} << "\n";

    auto cpuProfileInfo = getCPUProfileInfo();
    if (!cpuProfileInfo.has_value()) {
        std::cerr << "Failed to query cpu profile info\n";
        return 1;
    }

    std::cout << "\nGet the CPU Profile Info: \n"
              << "\tLogical Cores: " << (int)cpuProfileInfo->logical_cnt << "\n"
              << "\tPhysical Cores: " << (int)cpuProfileInfo->physical_cnt << "\n"
              << "\tCurrent Frequency: " << cpuProfileInfo->current_frequecy << " MHz\n"
              << "\tMax Frequency: " << cpuProfileInfo->max_frequency << " MHz\n"
              << "\tCPU Usage: " << cpuProfileInfo->cpu_usage_percentage << "%\n";

    auto cpuBonusInfo = getCPUBonusInfo();
    if (!cpuBonusInfo.has_value()) {
        std::cerr << "Failed to query cpu bonus info\n";
        return 1;
    }

    std::cout << "\nGet the CPU Bonus Info: \n";
    std::cout << "\tFeatures: ";
    for (const auto& feature : cpuBonusInfo->features) {
        std::cout << std::string{feature} << " ";
    }
    std::cout << "\n";

    if (cpuBonusInfo->has_big_little) {
        std::cout << "\tBig.Little Architecture: Yes\n"
                  << "\t\tBig Cores: " << cpuBonusInfo->big_core_count << "\n"
                  << "\t\tLittle Cores: " << cpuBonusInfo->little_core_count << "\n";
    } else {
        std::cout << "\tBig.Little Architecture: No\n";
    }

    if (cpuBonusInfo->temperature.has_value()) {
        std::cout << "\tTemperature: " << *cpuBonusInfo->temperature << "\n";
    } else {
        std::cout << "\tTemperature: Not available\n";
    }

    return 0;
}

Updated on 2026-03-09 at 10:14:01 +0000