标准开头
Items | Answers |
---|---|
GIT地址 | GIT |
GIT用户名 | homlex |
学号后5位 | 62618 |
博客地址 | 博客主页 |
作业地址 | 作业地址 |
一、从其他用户克隆仓库到本地
过程 | 操作记录 |
---|---|
第一步: fork | |
第二步:clone | |
第三步:配置安装 | |
第四步:完成启动 |
二、创建项目并编码。
创建项目:
创建一个C#.NET 项目,ConsoleApp, 改名为Calculator。
设计思路如下:
设计一个类MyRandom, 用于产生随即运算符和随机操作数。(为了方便后续计算,将这里的数字统统设为string型,后期会考虑重新设计成数字数据类型。)
设计一个Formular类,用于组合这些随机数和随机符号和随机数,并得到其结果,包含一个方法,能得到完整算式的一个集合,如:{"5+6×3-1 = 22", "3+2-5×0=5", "8×2-6÷2=13"}
设计WriteFile类,一个save(string, List<string> )方法,用于将生成的表达式保存为文件。
其他细节不做过多介绍。接下来是编码时间。
。。。。。。
一番"Code And Fix"之后,初代成品已完成编码:
运行。结果如下.
三、单元测试
我是这么做的:
在Executioner类里面右键-->创建单元测试--> OK
运行结果:可以看到对Executioner的Calc方法测试结果全部通过
接着对Formular类的GetFullExpressions方法测试:
断点调试(在Formular的GetResult方法中设置断点,然后启动调试)
程序在断点处停住。单步执行几下后可以在下方观察局部变量的变化等等等其他调试信息。
性能查看.
先将要产生的四则运算个数以硬编码的形式改为100万,再
ALT+F2
,勾选CPU Usage
, 下方点击开始。1分13秒后生成了测试报告。
可以看到Formular对CPU的占用率最大,主要是因为这个类既要产生表达式还要获得结果,因此可以看出其占比几乎达到100%。但是其他的方法偏低,可能是设计之初职责分配不均造成。 GetRandomNum比GetRandomOpt多大概10%,这是符合预期的,因为每一次产生数据,前者都要比后者多调用一次。
生成详细报告:点击这里:
他会生成一个vspx文件,我们可以看看程序运行的一些细节情况。
从整体看来,对CPU的消耗情况比较稳定。随机选取了三个时间点:可以看到使用率基本上平衡在12%.
之后点进占用率最大的GetFullExpressions方法之后可以看到它的一些细节情况。
四、克隆以及上传
克隆:上面已经演示过了,这里就只记录了代码上传的过程。
来到目录下,右键 打开gitbash
主要执行的
bash
如下:$ git config --global user.email "[email protected]" $ git config --global user.name "homlex" $ git init $ git add . $ git commit -m "Generate random formulas" $ git remote add origin [email protected]:homlex/Calculator.git $ git push -u origin master
上传成功
五、遇到的问题&解决
安装于配置问题 : 一切顺利,没有问题。
代码问题:在同一次的运行中,产生的随机数全部都一样
初始化随机种子,将
Random random = new Random();
改为
Random random = new Random(Guid.NewGuid().GetHashCode());
代码问题:计算结果问题。
在计算过程惊醒到特定阶段时,将用到的数据加以处理。(我这里是将栈逆转)
测试问题:没有遇到特别的问题,就是最开始不知道怎么写这个单元测试,不过后来通过百度解决了。
git 问题:运行
git add
时报错如下:error: open(".vs/Calculator/v15/Server/sqlite3/db.lock"): Permission denied error: unable to index file '.vs/Calculator/v15/Server/sqlite3/db.lock' fatal: adding files failed
原因:db.lock文件拒绝访问
在当前目录下创建
.gitignore
文件,用记事本编辑:/.vs
保存,再次
git add
. 原理:既然拒绝访问那就不要add它了吧~其他git问题:具体参考了这篇文章:git的初次使用
end
以上就是本次作业的全过程,掌握了单元测试和性能查看,从性能查看结果可以分析对代码的优化方向。
PS:GitHub是真的慢。:smile: