小编Kne*_*min的帖子

LINQ中的方法调用select(效率)

关于LINQ与标准foreach循环,我有一个基于效率的问题.

我有一个方法,大致如下

var foos = users.Select(this.GenerateNullableFoo).Where(foo => foo != null);
Run Code Online (Sandbox Code Playgroud)

事实证明,由于某种原因,这是非常缓慢的.使用时间戳,我能够确定缓慢的点恰好在select的迭代(从最终返回语句到下一个方法调用的开始的时间)比其他任何东西慢得多(13秒)(总时间<= 14秒) ).

当用以下代替时,整个处理时间减少到每次迭代不到1秒.

新代码:

var foos= new List<Foo>();

foreach (var user in users)
{
    var foo = GenerateNullableFoo(user);

        foo.IfNotNull(f => foos.Add(foo));
}
Run Code Online (Sandbox Code Playgroud)

据我所知,我的代码有效,新代码没有任何问题,但是,我完全不知道为什么使用上面的Select比看似相同的进程慢了10多倍.是否有任何见解可以解释这个差异?

此外,直到所述select/foreach 之后才对整个List进行保存,此时对db进行批量调用.

编辑:从起点到完成(和终止)的整个代码块如下:

//Code snippet pictured above
_repo.SaveFoo(Foos);
//at this point, the code terminates and is finished
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net performance foreach

5
推荐指数
1
解决办法
666
查看次数

从应用程序中删除Facebook用户

在may更新之前(我们使用离线令牌因为它们没有过期),我能够向facebook发送删除请求并在禁用离线访问启用后禁用用户的facebook链接(禁用)旧的功能),这不再有效.我想弄清楚可能有什么变化.目前没有关于这个主题的帖子,我发现的所有帖子在答案上都非常矛盾.

使用图谱API从用户删除应用程序

VS

Facebook帐户脱钩或取消授权Facebook应用程序,并检查从Facebook应用程序链接的状态

这也记录在图形文档中,说这个命令应该有效,我已经尝试了一些不同的语法(它实际上没有说明在文档中使用哪种语法 - 很棒的工作Facebook,它只是说"发送删除请求").

长话短说,这有用吗?尝试修复此功能时,我不断收到400错误"错误请求".

我尝试了以下两个网址:

https://graph.facebook.com/userId/permissions?access_token=someToken&method=delete https://graph.facebook.com/me/permissions?access_token=someToken&method=delete

facebook facebook-graph-api

2
推荐指数
1
解决办法
4939
查看次数

标签 统计

asp.net ×1

c# ×1

facebook ×1

facebook-graph-api ×1

foreach ×1

linq ×1

performance ×1