int 和 long 重载的性能损失
Performance loss with int and long overloads
问题:
为什么将列表从受保护的内部 class 传递到 API 方法然后返回到我的 UI 需要 4 秒,而实体中的直接数据访问需要 .4?是因为这些方法实际传递的是list吗?
背景:
我希望创建一个 "API" 层,它位于使用 Entity Framework 的数据访问层和 UI 层之间。这个想法是限制对 CRUD 操作的访问并强制通过 API 进行所有操作,但是我注意到性能很差。
当我在这里使用我的 class 结构时,本例中的 get 方法需要 4 秒 到 运行:
public class API
{
DataAccessClass _dataAccess = new DataAccessClass();
public List<Items> GetById(int id)
{
return _dataAccess.Get(id);
}
protected internal class DataAccessClass
{
protected internal List<Items> GET(int id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
protected internal List<Items> GET(long id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
}
}
然而,当我直接在代码中使用我的 dbcontext 时(我想阻止),它 运行s .4 秒 使用在受保护 class 以上:
using (var context = dbcontext)
{
return context.GetItems();
}
编辑:
当我排除API的数据访问部分,即受保护的内部部分,运行直接API中的using语句(只是剪掉受保护的内部部分)然后我得到可接受的 .4 秒。
为了解决我的性能问题,我从上面的 GET class 中删除了重载。
我的性能问题来自最初的问题,通过更改我的两个 get 方法(一个使用 int 和一个 long)的方法名称解决了。不确定为什么这些重载会导致问题,但通过删除重载并直接指定名称,我的性能问题得到了解决。
我的工作 class 看起来像:
public class API
{
DataAccessClass _dataAccess = new DataAccessClass();
public List<Items> GetById(int id)
{
return _dataAccess.Get(id);
}
protected internal class DataAccessClass
{
protected internal List<Items> GetByInt(int id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
protected internal List<Items> GetByLong(long id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
}
}
问题:
为什么将列表从受保护的内部 class 传递到 API 方法然后返回到我的 UI 需要 4 秒,而实体中的直接数据访问需要 .4?是因为这些方法实际传递的是list吗?
背景:
我希望创建一个 "API" 层,它位于使用 Entity Framework 的数据访问层和 UI 层之间。这个想法是限制对 CRUD 操作的访问并强制通过 API 进行所有操作,但是我注意到性能很差。
当我在这里使用我的 class 结构时,本例中的 get 方法需要 4 秒 到 运行:
public class API
{
DataAccessClass _dataAccess = new DataAccessClass();
public List<Items> GetById(int id)
{
return _dataAccess.Get(id);
}
protected internal class DataAccessClass
{
protected internal List<Items> GET(int id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
protected internal List<Items> GET(long id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
}
}
然而,当我直接在代码中使用我的 dbcontext 时(我想阻止),它 运行s .4 秒 使用在受保护 class 以上:
using (var context = dbcontext)
{
return context.GetItems();
}
编辑:
当我排除API的数据访问部分,即受保护的内部部分,运行直接API中的using语句(只是剪掉受保护的内部部分)然后我得到可接受的 .4 秒。
为了解决我的性能问题,我从上面的 GET class 中删除了重载。
我的性能问题来自最初的问题,通过更改我的两个 get 方法(一个使用 int 和一个 long)的方法名称解决了。不确定为什么这些重载会导致问题,但通过删除重载并直接指定名称,我的性能问题得到了解决。
我的工作 class 看起来像:
public class API
{
DataAccessClass _dataAccess = new DataAccessClass();
public List<Items> GetById(int id)
{
return _dataAccess.Get(id);
}
protected internal class DataAccessClass
{
protected internal List<Items> GetByInt(int id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
protected internal List<Items> GetByLong(long id)
{
using (var context = dbcontext)
{
return context.GetItems();
}
}
}
}