每个人都有自己的知识体系。
Toggle navigation
Home
随笔
C#/.Net
树莓派 / Raspberry
皓月汉化组
Beego
Golang
OxideMod
apache
haproxy
windows
Java
Objective-C
日语/罗马音歌词/日语常识
MongoDB
python
电学
公告
Minecraft服务器-公告
NanoPi
C4D (CINEMA 4D)
生活
推流/m3u8/rtmp/rtsp
Unity3d
ffmpeg
数据结构
区块链
tarui
UnityForPSVita
About Me
Archives
Tags
对 C# 基础语法 性能比较和深度研究
2017-11-30 17:10:39
211
0
0
akiragatsu
##首先准备一个计算时间差的代码 DateTime date1 = DateTime.Now; /* * 要处理的内容 A */ DateTime date2 = DateTime.Now; DateTime date3 = DateTime.Now; /* * 要处理的内容 B */ DateTime date4 = DateTime.Now; TimeSpan timeSpan1 = date2 - date1; TimeSpan timeSpan2 = date4 - date3; Console.WriteLine("A的运算需要了" + (timeSpan1).TotalMilliseconds + "毫秒"); Console.WriteLine("B的运算需要了" + (timeSpan2).TotalMilliseconds + "毫秒"); Console.WriteLine("两次运行的时间差" + (timeSpan1 - timeSpan2).TotalMilliseconds+ "毫秒"); Console.ReadLine(); 首先直接运行得出时间差计算过程本身的时间消耗、 我这台办公室电脑,Debug模式下运行 得到的 平均值是 0.3毫秒~0.4毫秒 心理先有个数。 然后接下来放入需要测试的代码 ##1、数据类型计算速度差异 ###1.1 整形和双精度浮点型 100万次加法 速度对比 DateTime date1 = DateTime.Now; /* * 要处理的内容 A */ int i1 = 1; for (long i = 0; i < 1000000; i++) { i1 += i1; } DateTime date2 = DateTime.Now; DateTime date3 = DateTime.Now; /* * 要处理的内容 B */ double d1 = 1; for (long i = 0; i < 1000000; i++) { d1 += d1; } DateTime date4 = DateTime.Now; TimeSpan timeSpan1 = date2 - date1; TimeSpan timeSpan2 = date4 - date3; Console.WriteLine("A的运算需要了" + (timeSpan1).TotalMilliseconds + "毫秒"); Console.WriteLine("B的运算需要了" + (timeSpan2).TotalMilliseconds + "毫秒"); Console.WriteLine("两次运行的时间差" + (timeSpan1 - timeSpan2).TotalMilliseconds+ "毫秒"); Console.ReadLine(); ###最终输出结果: A的运算需要了7.0022毫秒 B的运算需要了202.4992毫秒 两次运行的时间差195.497毫秒 整形和double类型计算速度区别还是很大的, 或许是double的精度太大了吧 ###1.2 float和double型 100万次加法 速度对比 DateTime date1 = DateTime.Now; /* * 要处理的内容 A */ float i1 = 1; for (long i = 0; i < 1000000; i++) { i1 += i1; } DateTime date2 = DateTime.Now; DateTime date3 = DateTime.Now; /* * 要处理的内容 B */ double d1 = 1; for (long i = 0; i < 1000000; i++) { d1 += d1; } DateTime date4 = DateTime.Now; TimeSpan timeSpan1 = date2 - date1; TimeSpan timeSpan2 = date4 - date3; Console.WriteLine("A的运算需要了" + (timeSpan1).TotalMilliseconds + "毫秒"); Console.WriteLine("B的运算需要了" + (timeSpan2).TotalMilliseconds + "毫秒"); Console.WriteLine("两次运行的时间差" + (timeSpan1 - timeSpan2).TotalMilliseconds + "毫秒"); ###一共执行了三次、然后看结果 A的运算需要了131.9998毫秒 B的运算需要了138.0004毫秒 两次运行的时间差6.0006毫秒 A的运算需要了128.9995毫秒 B的运算需要了120.5毫秒 两次运行的时间差-8.4995毫秒 A的运算需要了156.0016毫秒 B的运算需要了140.499毫秒 两次运行的时间差-15.5026毫秒 不知道是不是 没有体现出2种浮点型的精度差别。 时间差别并不大、而且有时不相上下 于是我把两边均赋值为 = 1.1f; (其实数据类型确定的时候、在内存分配上、已经确定了精度) ###得到结果 A的运算需要了186.9939毫秒 B的运算需要了119.5003毫秒 两次运行的时间差67.4936毫秒 A的运算需要了149.9987毫秒 B的运算需要了154.002毫秒 两次运行的时间差-4.0033毫秒 A的运算需要了149.9979毫秒 B的运算需要了138.5005毫秒 两次运行的时间差11.4974毫秒 抛开记时间本身导致的小小误差、所以和赋值关系不大 且二者速度差不多 ###1.2 string和char型 100万次字符赋值 速度对比 DateTime date1 = DateTime.Now; /* * 要处理的内容 A */ string i1 = "1"; for (long i = 0; i < 100000000; i++) { i1 = "1"; } DateTime date2 = DateTime.Now; DateTime date3 = DateTime.Now; /* * 要处理的内容 B */ char d1 = '1'; for (long i = 0; i < 100000000; i++) { d1 = '1'; } DateTime date4 = DateTime.Now; TimeSpan timeSpan1 = date2 - date1; TimeSpan timeSpan2 = date4 - date3; Console.WriteLine("A的运算需要了" + (timeSpan1).TotalMilliseconds + "毫秒"); Console.WriteLine("B的运算需要了" + (timeSpan2).TotalMilliseconds + "毫秒"); Console.WriteLine("两次运行的时间差" + (timeSpan1 - timeSpan2).TotalMilliseconds + "毫秒");
Pre:
mongodb 基本命令
Next:
0
likes
211
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.