C#做一个写txt文件流的测试,为什么配置低的机器写入的还快
测试机:笔记本i7 8G 固态硬盘
由于采取读码写入txt方式, 读码频率挺高,文件名为日期格式,当前采用每次读码打开文件写入的方式, 为什么没用sb,因为怕断电情况的数据丢失.所以采取每条存入的方式.
今天想对代码进行优化,采取文件流一直打开,不用每次打开关闭的情况,对效率进行测试.
1:新建项目 writetxt
2:添加时钟事件,定时写txt.
3:加两个写入方式
4:分别计时.查看效率.

static object obj = new object();
public static void WriteSvnLog(string result)
{
lock (obj)
{
Stopwatch sw1 = new Stopwatch();
sw1.Start();
string time = DateTime.Now.ToLongTimeString();
string path = Application.StartupPath + "\\upload\\";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
path = path + "\\logSvn" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
if (!File.Exists(path))
File.Create(path).Close();
//FileStream fileStream = new FileStream(path, System.IO.FileMode.Append, System.IO.FileAccess.Write);
//System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream, Encoding.Default);
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
sw.WriteLine(result + " " + time);
sw.Close();
sw.Dispose();
fs.Close();
fs.Dispose();
sw1.Stop();
Debug.WriteLine(" 用时ms:" + sw1.Elapsed.TotalMilliseconds);
}
}
结果:
用时ms:2.4102
用时ms:2.8373
用时ms:2.987
用时ms:2.8673
用时ms:3.0787
用时ms:3.4216
用时ms:2.558
用时ms:2.6216
用时ms:2.5094
用时ms:2.4726
打开文件大小216k

测试2:打开30M的文件测试时间:

用时ms:11.0885
用时ms:2.5825
用时ms:2.5461
用时ms:2.6026
用时ms:6.1945
用时ms:2.5809
用时ms:3.247
用时ms:5.4372
用时ms:2.4047
用时ms:2.5754
用时ms:2.5532
用时ms:2.4252
用时ms:3.2643
用时ms:2.3798
用时ms:2.5797
用时ms:2.6018
用时ms:3.1233
用时ms:5.5288
用时ms:2.9044
用时ms:2.0491
用时ms:2.7034
用时ms:5.2598
用时ms:2.2486
中间有大值出现.此时计算机未饱和状态,总体值变化不大.

继续观察,有波动.
换20ms

用时ms:2.3521
用时ms:3.0119
用时ms:2.5323
用时ms:3.2632
用时ms:2.5801
用时ms:2.4971
用时ms:2.7784
用时ms:3.0281
用时ms:2.351
用时ms:2.6322
用时ms:3.0763
用时ms:2.1234
用时ms:2.569
用时ms:2.4023
用时ms:2.6595
测试三,改程序,换intel双核3.0 4G内存,机械硬盘pc机测试 老机器
因为远程机没有vs环境,用时输出到txt中
1:先在本机测试

2:远程机:

哎呀,配置低机器竟然写入速度还快, 笔记本还是固态硬盘,难道win10的固态硬盘写的慢? 问群里大牛说法.具体也不去看究竟了主要在于测试


测试四:同时写20个txt.测试
这里边碰到局部变量回收的问题

定于局部变量的时钟,运行一次就结束了.定义在外边就可以一直运行. 上边的循环中每次循环执行一次timer 执行完之后,重新赋值,原先的失效.也矫正了以前理解上的误区
student 对象在button 外定义.全局变量
结果stulist 的值列表 是十个

放在button里边
.
结果每次循环,表里边还是一个值,说明每次new 分配了一个新的列表对象,原先的被释放掉了
如下图,

那继续 list 对象放在外边,不new 对象,结果 也是如此 ,充分说明,每次new 之后产生新的地址,分配新的堆存储空间

C#做一个写txt文件流的测试,为什么配置低的机器写入的还快的更多相关文章
- C++文件处理(一):读/写txt文件
C++文件处理与C语言不同,C++文件处理使用的是:流(stream) C++头文件fstream定义了三个类型来支持文件IO
- 【学习总结】GirlsInAI ML-diary day-15-读/写txt文件
[学习总结]GirlsInAI ML-diary 总 原博github链接-day15 认识读/写txt文件 路径: 绝对路径:文件在电脑中的位置 相对路径:下面会用到 1-准备 新建一个 pytho ...
- 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传
使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能.并且在界面上有radio 的选择内容也要上传 uploadify 插件的 下载和文档地址 ...
- 小白也能看懂的Redis教学基础篇——做一个时间窗限流就是这么简单
不知道ZSet(有序集合)的看官们,可以翻阅我的上一篇文章: 小白也能看懂的REDIS教学基础篇--朋友面试被SKIPLIST跳跃表拦住了 书接上回,话说我朋友小A童鞋,终于面世通过加入了一家公司.这 ...
- .Net写txt文件-简单的记录执行日志信息代码
在执行一些批量操作时,想记录一些执行日志信息,越简单方便越好啊.提供一个常用的简单方法,将信息记录在txt文件里: public static void log(string content, str ...
- matlab写txt文件
fd=fopen('C:\Users\Qin\Desktop\1112.txt','w');for i=16:19 for j=1:5 fprintf(fd,'%f,%f\r\n',[cluster( ...
- C# 文件流FileStream 实现多媒体文件复制 StreamReader StreamWriter 读取写入文本
#region 实现多媒体文件的复制 string source = @"F:\123\source.avi";//源文件路径 string target = @"F:\ ...
- 写TXT文件
#region 写日志 private static void writelog(string strwrite) { string strPath = "d:/log.txt"; ...
- python写txt文件
with open('data.txt','w') as f: #设置文件对象 w是重新写,原来的会被抹掉,a+是在原来的基础上写 str0=u"写文件\n" #写中文要在字符串签 ...
随机推荐
- 16.Set、List、Queue集合;Map.md
目录 1.Set 1.2HashSet TreeSet 2.List 2.1ArrayList 2.1.1ArrayList和Vector的区别 2.2LinkedList 3.Queue 4.各种线 ...
- C:\\MFC控件大小随窗体大小而改变
一.大小和位置都改变 1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小. 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(): 注意 ...
- linux软连接(转)
这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接. 这个命令最常用的参数是-s,具体用法是:sudo l ...
- Windows 2012设置允许单个用户连接多个会话的方法
WINDOWS 2012 服务器默认只允许单个用户连接一个远程桌面会话,如果已有连接登陆,另外的连接再登陆会踢掉之前的连接.如果需要两个远程桌面同时连接 找到:HKEY_LOCAL_MACHINE\S ...
- 大数据入门到精通1--大数据环境下的基础文件HDFS 操作
1.使用hdfs用户或者hadoop用户登录 2.在linux shell下执行命令 hadoop fs -put '本地文件名' hadoop fs - put '/home/hdfs/sample ...
- java搭建web从0-1(第一步:创建web工程)
intellij idea版本:2017 1.新建一个web工程 使用工具intellij ideal,注意:只有Ultimate版本的可以新建web工程,社区版本的不支持新建web工程 File ...
- javascript 页面导出功能
javascript 页面导出功能 <a class="btn" href="javascript:void(0);" onclick="win ...
- 可视化工具Navicat的使用
可视化工具Navicat的使用 掌握Navicat的基本使用 # PS:在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图 ...
- 用photoshop 把视频镜头做成GIF图片
https://jingyan.baidu.com/article/47a29f2432e113c0142399b0.html
- centos 6.9 NTP基准时间服务器配置
时间服务器端 yum install ntp -y vim /etc/ntp.conf 增加允许客户端访问 restrict 192.168.0.0 mask 255.255.0.0 nomodify ...