萝卜头IT论坛

搜索
查看: 2341|回复: 18
收起左侧

CPU Test Scala3版

[复制链接]
发表于 2023-7-27 20:58:07 | 显示全部楼层 |阅读模式
本帖最后由 AkiPolaris 于 2023-7-27 20:58 编辑

看到@ATP@爱电脑的昕宇 都在发CPU Test。
爱电脑的昕宇的Python版:暑假收官之作:CPU测速工具V2.0 java版 : CPU Test Java版(我的第一个Java小程序!)
ATP的C 版  改编:CPU测速工具V2.0

恰好我最近在学Scala3,于是也以此为Flag用Scala3模仿着写了一个CPU Test。
Scala3是一个运行于jvm上的,具有面向对象和函数式特性的高级语言,其具有完善的类型推断特性,函数式语言的函数对象,也具有gc等jvm相关的特性。
当然,scala基于jvm,其运行效率比java略低,但亦有其开发效率高、函数式编程等特征。

由于scala的编程思路不同于Java等语言,因此虽然总体思路相似,但在测试细节上与上面二位有所不同,因此分数无法直接比较。
同时运行该测试需要scala环境(相应的也要java环境)。

以下是运行测试时对cpu的使用情况:
截图 2023-07-27 20-22-53.png
以下是程序运行过程:
截图 2023-07-27 20-23-08.png
以下是主程序源码:
  1. import java.util.Date
  2. import scala.io.StdIn.readInt
  3. @main def Main() =
  4.     def choose() = //选项
  5.         welcome()
  6.         try
  7.             readInt() match
  8.                 case 1 => (1,test())
  9.                 case 2 => (2,about())
  10.                 case 3 => (3,())
  11.                 case _: Int => (0,println("无效命令"))
  12.         catch
  13.             case nfe: NumberFormatException => println("请只输入数字")

  14.     def about() =
  15.         println("""|这是一个简易CPU性能测试工具,也是我的第一个用Scala3编写的小程序。
  16.                    |获取python版:https://social.luobotou.org/thread-52933-1-1.html
  17.                    |获取Java版:https://bbs.luobotou.org/thread-55094-1-1.html
  18.                    |由@ATP编写的C版:https://social.luobotou.org/thread-55087-1-1.html
  19.                    |注意:由于编程语言的差异,以上版本的成绩之间没有可比性!
  20.                    |""".stripMargin)

  21.     def welcome() =
  22.         println("""CPU Test Scala V1.0 By AkiPolaris
  23.                   |成绩仅图一乐awa
  24.                   |请选择模式:「1」 测试 「2」功能 「3」退出
  25.                   |""".stripMargin)

  26.     def time() = Date().getTime()

  27.     def test() = //测试方法
  28.         val list = (1L to 1_000_000_000L) //从1加到10^9
  29.         val startTime = time()
  30.         val cnt = list.reduce(_ + _)
  31.         val endTime = time()
  32.         val score = 1_000_000_000L/(endTime - startTime)
  33.         println(s"分数为:$score")
  34.    
  35.     while choose() != (3,())
  36.     do ()
复制代码


以下是打包过程:
截图 2023-07-27 19-56-43.png

以下是jar包(没错,是jar)
cputest_3-0.1.0-SNAPSHOT.jar (6.83 KB, 下载次数: 99)
回复

使用道具 举报

发表于 2023-7-27 22:42:23 | 显示全部楼层
界面好看。
就是依赖的运行环境有点要求。
回复

使用道具 举报

 楼主| 发表于 2023-7-28 10:18:56 来自手机 | 显示全部楼层
OOO 发表于 2023-7-27 22:42
界面好看。
就是依赖的运行环境有点要求。

这个界面,是gnome shell的默认配置之一,加上我用的是fish作为命令行,就成这样了。
至于运行环境,只能说不带环境的打包是这样的,而且scala对于个人用户确实接触不到(像java还有mc等游戏/软件的推广),但目前我没找到自带环境的打包方法。
回复

使用道具 举报

发表于 2023-7-28 11:46:42 | 显示全部楼层
AkiPolaris 发表于 2023-7-28 10:18
这个界面,是gnome shell的默认配置之一,加上我用的是fish作为命令行,就成这样了。
至于运行环境,只能 ...

啊哈我也喜欢用fish做命令行
回复

使用道具 举报

发表于 2023-7-28 13:10:56 | 显示全部楼层
哈哈,编程大赛开始了。
回复

使用道具 举报

发表于 2023-7-28 20:04:39 | 显示全部楼层
我萝卜论坛人才济济
回复

使用道具 举报

发表于 2023-7-29 06:40:33 来自手机 | 显示全部楼层
              
真是条条大路通罗马啊
回复

使用道具 举报

发表于 2023-7-29 13:53:40 | 显示全部楼层
Java库得pip方式安装吧
回复

使用道具 举报

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

GMT+8, 2024-5-17 08:46 , Processed in 0.117045 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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