场景
C#中使用ProtoBuf提高序列化速度对比二进制序列化:
/BADAO_LIUMANG_QIZHI/article/details/99850052
实现
参考上面那篇博客,进而将序列化后的数据写入文件。
新建Winforn程序,然后拖拽两个Button。
第一个Button用来构建一个1000长度的list对象。
先声明一个全局的list变量。
List<Request> requestList = new List<Request>();
然后在第一个按钮点击事件中
private void button4_Click(object sender, EventArgs e){DateTime begin = DateTime.Now;Console.WriteLine("protobuf初始化数据开始" + begin.ToString("yyyy-MM-dd HH:mm:ss"));for (int i = 1; i <= 1000; i++){requestList.Add(new Request() { id = i,password = "密码"+i});}DateTime end = DateTime.Now;TimeSpan ts = end - begin;Console.WriteLine("protobuf初始化数据结束" + end.ToString("yyyy-MM-dd HH:mm:ss"));Console.WriteLine("共花费" + ts.TotalSeconds);}
注:
这里的类文件是根据.prpto文件生成的,所以其初始化赋值方式注意要如上使用。
然后在第二个按钮的点击事件中:
private void button6_Click(object sender, EventArgs e){DateTime begin = DateTime.Now;Console.WriteLine("ProtoBuf保存数据开始" + begin.ToString("yyyy-MM-dd HH:mm:ss"));using (System.IO.FileStream fs = new System.IO.FileStream(@"E:\testdata1\Record2.data", System.IO.FileMode.Create, System.IO.FileAccess.Write)){ProtoBuf.Serializer.Serialize(fs, this.requestList);}DateTime end = DateTime.Now;TimeSpan ts = end - begin;Console.WriteLine("ProtoBuf保存数据结束" + end.ToString("yyyy-MM-dd HH:mm:ss"));Console.WriteLine("花费时间" + ts.TotalSeconds);}