本版
查看: 9030|回复: 9

改编:CPU测速工具V2.0

[复制链接]

Super Moderator

IT爱好者

楼主(1#)
发表于 2023-7-25 17:09:24 | 只看该作者 |只看大图 |倒序浏览 |阅读模式
源码灵感来源:暑假收官之作: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
CT.c

[Lv.8]超级萝卜

沙发(2#)
发表于 2023-7-25 18:41:41 来自手机 | 只看该作者
C语言的性能应该比Python好,可以更准确地反应CPU能力

[Lv.8]超级萝卜

板凳(3#)
发表于 2023-7-26 12:18:12 | 只看该作者
成绩差别,看来C语言真的比python性能高


Super Moderator

实习版主

地板(4#)
发表于 2023-7-26 13:10:28 | 只看该作者
爱电脑的昕宇 发表于 2023-7-26 12:18
成绩差别,看来C语言真的比python性能高

每个语言都有它的特点,python现在还是非常火的。

[Lv.8]超级萝卜

Hello World

5#
发表于 2023-7-26 14:16:40 | 只看该作者
jyssysz 发表于 2023-7-26 13:10
每个语言都有它的特点,python现在还是非常火的。

Python适合做一些轻量级的程序,编写速度很快,代码简单,但运行速度较慢。c语言适合做对速度敏感的程序,比如说游戏或者大型程序,编写耗时,代码复杂但是运行速度快。
MOONLIGHT × RainTek微雨科技
有事发邮箱flowerzicon@outlook.com或者站内私信。
珍惜每一刻,珍惜每一个帮助你的人,世界因你而精彩。

Intern Moderator

6#
发表于 2023-7-26 16:57:05 | 只看该作者
c语言好像python的占用低 速度快

Intern Moderator

7#
发表于 2023-7-26 16:57:21 | 只看该作者
wtgahz 发表于 2023-7-26 16:57
c语言好像比oython的占用低 速度快

Python,打错字了

[Lv.7]特大萝卜

8#
发表于 2023-7-26 17:40:40 | 只看该作者
看来擅长编程的人才论坛很多呢

联系我们(Contact)|手机版|萝卜头IT论坛 ( 苏ICP备15050961号-1 )

GMT+8, 2026-10-18 21:13 , Processed in 0.07 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表