gpt4 book ai didi

与 simplerepository 相比,使用 activerecord 的 Subsonic linq 速度非常慢

转载 作者:行者123 更新时间:2023-12-02 16:32:24 26 4
gpt4 key购买 nike

有人知道为什么 linq 查询在使用事件记录查询时比使用 simplerepository 查询慢大约 6 倍吗?下面的代码运行速度比我使用简单存储库查询数据时慢 6 倍。这段代码循环执行1000次

提前致谢

        string ret = "";            
// if (plan == null)
{
plan =VOUCHER_PLAN.SingleOrDefault(x => x.TENDER_TYPE == tenderType);
}
if (plan == null)
throw new InvalidOperationException("voucher type does not exist." + tenderType);

seq = plan.VOUCHER_SEQUENCES.First();
int i = seq.CURRENT_NUMBER;
seq.CURRENT_NUMBER += seq.STEP;
seq.Save();

最佳答案

我们对此进行了一些分析,发现 SubSonic 的 record.SingleOrDefault(x=>x.id=someval) 比通过 CodingHorror 执行的相同查询慢 20 倍。在这里记录:https://github.com/subsonic/SubSonic-3.0/issues/258 .

分析器在 ExecutionBuilder.cs 中指出了这一点:

// this sucks, but since we don't track true SQL types through the query, and ADO throws exception if you
// call the wrong accessor, the best we can do is call GetValue and Convert.ChangeType
Expression value = Expression.Convert(
Expression.Call(typeof (Convert), "ChangeType", null,
Expression.Call(reader, "GetValue", null, Expression.Constant(iOrdinal)),
Expression.Constant(TypeHelper.GetNonNullableType(column.Type), typeof(Type))
),
column.Type
);

令人失望,因为我真的很喜欢 SubSonic/Linq。

最后我们放弃了,我写了这个 - http://www.toptensoftware.com/petapoco 。移植后,我们的负载测试显示每秒请求数上升,CPU 负载从大约 80% 下降到 5%。

关于与 simplerepository 相比,使用 activerecord 的 Subsonic linq 速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com