【发布时间】:2023-03-13 02:00:02
【问题描述】:
我有一个 OData 端点(使用 .NET Core 和 .NET 4.7.1 测试),它公开了 2,500 个内置在内存中的对象。 Get OData 调用需要 30-40 秒。返回原始 JSON 的等效 ASP.NET WEB API 调用需要 1 秒。感觉好像 OData 框架不如 Json.NET 高效。有关如何提高性能的任何建议?
真的很慢。
[EnableQuery(EnsureStableOrdering = false)]
public ActionResult<IEnumerable<Person>> Get()
{
var list = new List<Person>();
for (var i = 0; i < 2500; i++)
{
list.Add(new Person());
}
return list;
}
真的很快。
public IHttpActionResult Get()
{
var list = new List<Person>();
for (var i = 0; i < 2500; i++)
{
list.Add(new Person());
}
var json = JsonConvert.SerializeObject(list);
return Ok(json);
}
【问题讨论】:
-
输出的json结果是不是一模一样?
-
您是否尝试过运行分析器来查看实际花费的时间?
-
完全猜测,但它可能是 OData 想要使用的 IEnumerable,因此更改为 List 会有所帮助。
-
如果你想找出它慢的原因,试着分析它来看看时间花在了哪里。显然它不是这里提供的代码 sn-ps 中的东西,因为它们几乎相同。
标签: .net json asp.net-core asp.net-web-api odata