|
源码灵感来源:暑假收官之作:CPU测速工具V2.0 - 原创小软件 - 萝卜头IT论坛 - Powered by Discuz! (luobotou.org)
看到@爱电脑的昕宇 写的CPU测速工具,采用的是python,结合学的C语言进行一些改编,不确定程序是否能合理运行。
源码:
#include <stdio.h>
#include <time.h>
// Function Declarations
void about();
void timeBasedTest();
void countBasedTest();
// Function Definitions
void about() {
printf("CPU Test V 2.0\n爱电脑的昕宇作品\n结果仅供参考。\n");
}
void timeBasedTest() {
clock_t start, end;
double cpu_time_used;
int looptime = 1;
int n = 0;
double total = 0.0;
while (total <= 5.0) {
start = clock();
while (n < (looptime * 1000000)) {
n = n + 1;
}
end = clock();
cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
total = total + cpu_time_used;
looptime = looptime + 1;
}
printf("n: %d\n", n);
printf("total: %f\n", total);
int v = (int)(n / total);
printf("变量为时间得分:%f\n", (double)v);
}
void countBasedTest() {
clock_t start, end;
double cpu_time_used;
int s = 0;
start = clock();
while (s < 100000000) {
s = s + 1;
}
end = clock();
cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
double ops = s / cpu_time_used;
printf("变量为次数得分:%f\n", ops);
}
int main() {
printf("这是什么?\n\n在控制变量为时间测试中,程序进行5秒的循环测试,每次测试执行一百万次+1运算;\n\n在控制变量为次数测试中,程序执行一亿次+1运算,直到运算完成后计算速度。\n");
int choice;
do {
printf("\n请选择测试类型:\n1. 控制变量为时间测试\n2. 控制变量为次数测试\n0. 退出\n");
if (scanf("%d", &choice) != 1) {
printf("无效的选择。\n");
return 1;
}
switch (choice) {
case 1:
timeBasedTest();
break;
case 2:
countBasedTest();
break;
case 0:
printf("程序已退出。\n");
return 0;
default:
printf("无效的选择,请重新输入。\n");
break;
}
} while (1);
return 0;
}
原理:
该C程序是一个简单的CPU测试程序,用于测试CPU的性能。程序提供了两种测试类型:控制变量为时间测试和控制变量为次数测试。
1. 控制变量为时间测试 (`timeBasedTest` 函数):
在这个测试中,程序进行5秒的循环测试,每次测试执行一百万次+1运算。它的主要步骤如下:
- 初始化一个变量 `looptime` 为 1,用于记录测试的轮数。
- 初始化一个变量 `total` 为 0.0,用于记录已经消耗的总时间。
- 进入一个循环,该循环会不断执行下面的步骤直到 `total` 的值超过 5.0 秒为止:
- 记录当前时间为 `start`。
- 在一个内层循环中,执行 `looptime * 1000000` 次加一操作,将变量 `n` 递增。
- 记录当前时间为 `end`。
- 计算这次测试消耗的 CPU 时间 `cpu_time_used`,通过计算 `end - start` 得到时间差,再除以 `CLOCKS_PER_SEC` 得到秒数。
- 将本次测试消耗的 CPU 时间累加到 `total` 中。
- 将 `looptime` 递增,用于下一轮测试。
- 最后,计算变量 `n` 在总时间 `total` 内的平均执行次数,将其转换为整数 `v`。
2. 控制变量为次数测试 (`countBasedTest` 函数):
在这个测试中,程序执行一亿次+1运算,直到运算完成后计算运算速度。它的主要步骤如下:
- 初始化一个变量 `s` 为 0,用于记录执行的次数。
- 记录当前时间为 `start`。
- 进入一个循环,该循环会执行 1 亿次加一操作,将变量 `s` 递增。
- 记录当前时间为 `end`。
- 计算这次测试消耗的 CPU 时间 `cpu_time_used`,通过计算 `end - start` 得到时间差,再除以 `CLOCKS_PER_SEC` 得到秒数。
- 计算每秒钟可以执行的次数 `ops`,通过将 `s` 除以 `cpu_time_used` 得到。
附件一个是源码,还有一个是编译后的.exe
CT.exe
(83.12 KB, 下载次数: 422)
CT.c
(2.03 KB, 下载次数: 403)
|
|