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();
            }
        }
    }
}