tests/DeepClonePerformanceTest/Program.cs
(开头部分) 12KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
#pragma warning disable CS8618
using DotNetCommon.Extensions;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
namespace DeepClonePerformanceTest
{
internal class Program
{
static void Main(string[] args)
{
var list = new List<Person>();
for (int i = 0; i < 100; i++)
{
list.Add(new Person() { Id = i + 1, Name = i + 1 + "-name", Age = Random.Shared.Next(5, 10) + 15, Birth = DateTime.Parse("1995-01-02"), CreateTime = DateTime.Now, UpdateTime = DateTime.Now, Desc = i + 1 + "-desc", Phone = "027-12345678", Score = 95, State = EnumState.Normal });
}
//手写代码
Console.WriteLine($"SrcClone--------------------------------List<Person>[Count=100]------------------------------------");
TestSrcClone(list);
//DeepClone 使用编译表达式
Console.WriteLine();
Console.WriteLine($"DeepClone--------------------------------List<Person>[Count=100]------------------------------------");
TestDeepClone(list, false);
//json 序列化反序列化
Console.WriteLine();
Console.WriteLine($"JsonSerial--------------------------------List<Person>[Count=100]------------------------------------");
TestJsonSerial(list);
//BinarySerialize 序列化反序列化
Console.WriteLine();
Console.WriteLine($"BinarySerial--------------------------------List<Person>[Count=100]------------------------------------");
TestBinarySerial(list);
Console.WriteLine("ok");
Console.ReadLine();
}
static void TestSrcClone(List<Person> list)
{
list.Select(i => new Person { Id = i.Id, Age = i.Age, Birth = i.Birth, CreateTime = i.CreateTime, Desc = i.Desc, Name = i.Name, Phone = i.Phone, Score = i.Score, State = i.State, UpdateTime = i.UpdateTime }).ToList();
var st = new Stopwatch();
st.Start();
var newList = list.Select(i => new Person { Id = i.Id, Age = i.Age, Birth = i.Birth, CreateTime = i.CreateTime, Desc = i.Desc, Name = i.Name, Phone = i.Phone, Score = i.Score, State = i.State, UpdateTime = i.UpdateTime }).ToList();
st.Stop();
Console.WriteLine($"1 次克隆\t\t\t耗时: {st.ElapsedMilliseconds} 毫秒,\t\t\t平均: {st.ElapsedMilliseconds / (1.0)} 毫秒");
st.Restart();
for (int i = 0; i < 100; i++)
{
var newList2 = list.Select(i => new Person { Id = i.Id, Age = i.Age, Birth = i.Birth, CreateTime = i.CreateTime, Desc = i.Desc, Name = i.Name, Phone = i.Phone, Score = i.Score, State = i.State, UpdateTime = i.UpdateTime }).ToList();
}
st.Stop();
Console.WriteLine($"100 次克隆\t\t\t耗时: {st.ElapsedMilliseconds} 毫秒,\t\t\t平均: {st.ElapsedMilliseconds / (100 * 1.0)} 毫秒");
st.Restart();
for (int i = 0; i < 1000; i++)
后面还有 197 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
