性能:反序列化JSON数组或在c#上存储包含数据的常量[]?
Im以JSON格式存储了大量需要提交到DB的数据。 此JSON数据正在反序列化为C#类[]。 问题是,还有其他种子数据存储在性能:反序列化JSON数组或在c#上存储包含数据的常量[]?,c#,json-deserialization,C#,Json Deserialization,Im以JSON格式存储了大量需要提交到DB的数据。 此JSON数据正在反序列化为C#类[]。 问题是,还有其他种子数据存储在静态只读类[]中,只需加载/发送到DB即可。 我的问题是,假设一个实体有2万条记录,哪一条更好。拥有JSON和反序列化,还是拥有一个巨大的静态只读类[]? 我的目标是为同一件事提供一种统一的数据存储方法,而不是不同类型的文件 编辑:我的问题显然没有得到很好的解释,所以这次我会举个例子。我有两个选项来加载数据: 一个Json: 每个项都被反序列化为一个UserEntity,然
静态只读类[]
中,只需加载/发送到DB即可。
我的问题是,假设一个实体有2万条记录,哪一条更好。拥有JSON和反序列化,还是拥有一个巨大的静态只读类[]
?
我的目标是为同一件事提供一种统一的数据存储方法,而不是不同类型的文件
编辑:我的问题显然没有得到很好的解释,所以这次我会举个例子。我有两个选项来加载数据:
一个Json:
每个项都被反序列化为一个UserEntity
,然后存储在数据库中。
但是,也有其他文件用于将数据加载到数据库的相同目的。但在这种情况下,它们的存储方式如下:
public static class UserSeedData
{
public static readonly UserEntity[] UserData = {
new UserEntity{
Id = "56d0bdbe-25be-4ea8-a422-dc302deee962",
Name = "C-1",
LegacyId = 1
},
new UserEntity{
Id = "7bf2e997-8a8b-43c9-ba08-1770cd3adb38",
Name = "C-2",
LegacyId = 2
}
};
}
我的问题是,加载和序列化JSON//加载静态类UserSeedData
以将其插入数据库中,哪个更快,或者两者之间是否有任何区别
我关注的是反序列化部分,而不是提交到DB。这是一个遗留系统,目前正在使用两种方式加载数据。我只是试图通过定义哪种方法更好来规范流程
最后,提交给DB的代码是:
从JSON:
List<UserEntity> users = JsonConvert.DeserializeObject<List<UserEntity>>(File.ReadAllText("Users.json"));
foreach (var userData in users)
{
_db.Add(userData);
}
您的瓶颈将是DB编写,而不是C#代码,因此您应该集中精力提高性能/做这里最好的事情。这将取决于您的数据、模型、数据库技术等。这就引出了一个问题:为什么要在数据库中存储JSON,请使用适当的列和表。什么是
静态只读类[]
,它是某个类的数组,还是其他类型的集合(为什么使用数组而不是字典
)?为什么它是静态的
或只读的
相关呢?@Charlieface我用更多的细节编辑了我的问题。请检查20K记录对于JSON和DB来说都不是很大。对于这样的数量,性能对于任何合理的代码来说都不会是一个明显的问题。只要使用你认为更可读的东西就行了。我明白了,所以你是通过EF将数据存储在普通的表中。如果我理解正确的话,您的意思是用上面的代码生成整个20K记录。静态类几乎肯定更快,但速度可能不是很快,而且IMHO更难处理。第三种选择是首先将数据保存在数据库中。另外,有多少数据可以动态生成,比如Id号?
List<UserEntity> users = JsonConvert.DeserializeObject<List<UserEntity>>(File.ReadAllText("Users.json"));
foreach (var userData in users)
{
_db.Add(userData);
}
foreach (var userData in UserSeedData.UserData)
{
_db.Add(userData);
}