小编Pet*_*r T的帖子

Parallel.ForEach vs Task.Run和Task.WhenAll

使用Parallel.ForEach或Task.Run()以异步方式启动一组任务有什么区别?

版本1:

List<string> strings = new List<string> { "s1", "s2", "s3" };
Parallel.ForEach(strings, s =>
{
    DoSomething(s);
});
Run Code Online (Sandbox Code Playgroud)

版本2:

List<string> strings = new List<string> { "s1", "s2", "s3" };
List<Task> Tasks = new List<Task>();
foreach (var s in strings)
{
    Tasks.Add(Task.Run(() => DoSomething(s)));
}
await Task.WhenAll(Tasks);
Run Code Online (Sandbox Code Playgroud)

c# async-await parallel.foreach

144
推荐指数
2
解决办法
7万
查看次数

匹配包含"不关心"的二进制模式

我有一组位模式,并希望找到集合中与给定输入匹配的元素的索引.位模式包含"不关心"位,即x-es,它匹配0和1.

示例 位模式集是

index abcd
   0  00x1
   1  01xx
   2  100x
   3  1010
   4  1x11
Run Code Online (Sandbox Code Playgroud)

然后,尝试匹配0110应返回索引1和1011应返回索引4.

如何通过元素线性搜索更快地解决这个问题?我想可以制作一种二叉树,但是,创建这样一棵树的智能方法是什么?是否存在针对此类问题的其他有效数据结构/算法,主要是在查询效率和存储要求方面.

  • 位模式将是64位(或更多)
  • 集合中的元素数量将为10 ^ 5 - 10 ^ 7
  • 并非所有比特组合都在集合中表示,例如在示例中未表示0000
  • 数据集中将有大量的x-es
  • 位串只匹配集合中的一个元素

我有两种不同的情况需要解决这个问题

  • 案例1:我有可能进行大量的预计算
  • 案例2:新元素将动态添加到集合中

更新 x-es更有可能出现在某些位位置,也就是说,某些位位置将由x-es支配,而其他位将主要为零/ 1.

algorithm search data-structures

8
推荐指数
1
解决办法
1508
查看次数

单例模式 - 简化实现?

在深度C#中建议的单例模式实现是

public sealed class Singleton
{
    private static readonly Singleton instance = new Singleton();
    static Singleton()
    {
    }

    private Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            return instance;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ReSharper建议使用auto属性和C#6自动属性初始化器简化它:

public sealed class Singleton
{
    static Singleton()
    {
    }

    private Singleton()
    {
    }

    public static Singleton Instance { get; } = new Singleton();
}
Run Code Online (Sandbox Code Playgroud)

这确实看起来更简单.使用这种简化有不足之处吗?

c# resharper singleton

8
推荐指数
1
解决办法
449
查看次数

Visual Studio忙着等待内部操作

很多时候在调试我的(WinForms)应用程序时遇到断点,Visual Studio会在10-20秒内无响应,我在右下角看到以下消息Visual Studio正忙:Microsoft Visual studio正在等待内部操作完成.每次发生时,我都会看到Visual Studio Standard Collector正在使用大量的CPU.任何人都可以告诉我这个标准收藏家是什么,以及是否有办法避免这种情况发生?这是在Windows 10,VS Community 2015 Update 1上.

c# visual-studio-2015

7
推荐指数
1
解决办法
3025
查看次数

TPL Dataflow异步调度

async Tasks 的调度不像我在TPL Dataflow中预期的那样工作.在下面的示例中,我希望ActionBlock尽快处理数据TransformBlock.但它正在等待第二个(延迟)结果,然后才进入第三个结果.我在这里误解了什么?处理顺序是否有一些要求?

public class TestDataFlow
{
    public System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();

    public async Task Flow()
    {
        watch.Start();

        var plus10 = new TransformBlock<int, int>(async input =>
        {
            if (input == 2)
            {
                await Task.Delay(5000);
            }
            Console.WriteLine("Exiting plus10 for input {0} @ {1}", input, watch.Elapsed);
            return input + 10;
        },
        new ExecutionDataflowBlockOptions
        {
            MaxDegreeOfParallelism = 4,
        });

        var printSolution = new ActionBlock<int>(input =>
        {
            Console.WriteLine("Solution: {0} @ {1}", input, watch.Elapsed.TotalMilliSeconds);
        },
        new ExecutionDataflowBlockOptions
        { …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library async-await tpl-dataflow

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

使用哪个 StyleCop 包

我将在我的 C# 项目中引入 StyleCop,并且似乎有多种方法可以做到这一点。检查 NuGet 我可以看到 StyleCopPlus.MSBuild(似乎没有被积极开发)、StyleCop、StyleCop.Analyzers,它们似乎都将 StyleCop 引入项目。还有一个 StyleCop Visual Studio 扩展和一个 Resharper 的 StyleCop 扩展。

有推荐的方法吗?应该积极开发一个好的解决方案并支持新的语言特性。

c# stylecop visual-studio

4
推荐指数
1
解决办法
1480
查看次数

LightGbm:如何使用 eval_sample_weight

我正在处理 LightGbm(Scikit-learn API)中的二进制分类问题,并且在理解如何包含样本权重时遇到问题。我的代码目前看起来像这样

classifier = LGBMClassifier(n_estimators=100, learning_rate = 0.1, num_leaves = 15)    
classifier.fit(X_train, y_train, sample_weight = w_train, eval_set = (X_val, y_val))
Run Code Online (Sandbox Code Playgroud)

w_train是一个与 y_train 维度相同的 numpy 数组。但是我需要 LightGbm 在验证集上也使用 sample_weights,所以我eval_sample_weightfit函数中设置。我希望这也是一个数组w_val(与 具有相同的维度y_val),但我从文档中看到这是一个数组列表。我找不到任何使用它的例子,所以我很难理解为什么。据我了解,这应该只是验证集中每个元素的权重。数组列表:这是否意味着每个样本有多个权重?谁能解释一下?

lightgbm

3
推荐指数
1
解决办法
1866
查看次数

运行 BenchmarkDotNet 时出现“错误的程序集绑定重定向”

当为我的项目中的方法运行 BenchmarkDotNet 时,我在屏幕上打印了一些“错误的程序集绑定重定向”警告/错误消息。这让我有点困惑,因为我认为程序集绑定重定向是一个 .Net Framework 概念,而我的项目是 .Net Core 3.0。谷歌搜索警告/错误消息没有结果。有关这些消息的含义以及可能如何解决问题的任何提示。我尝试清理 Nuget 缓存、恢复 Nuget 包、清理和重建解决方案,但没有任何帮助。

// BeforeAnythingElse

// Benchmark Process Environment Information:
// Runtime=.NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob

OverheadJitting  1: 1 op, 308100.00 ns, 308.1000 us/op
// Wrong assembly binding redirects for System.Data.Common.resources, Version=4.2.1.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for System.Data.Common.resources, Version=4.2.1.0, Culture=en, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for System.Data.SqlClient.resources, Version=4.6.0.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for …
Run Code Online (Sandbox Code Playgroud)

c# assembly-binding-redirect .net-core benchmarkdotnet

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

在List/IEnumerable中重复数字

我有一个清单,例如

List<int> List1 = new List<int>{1, 5, 8, 3, 9};
Run Code Online (Sandbox Code Playgroud)

重复列表中的元素以获得{1,1,5,5,8,8,3,3,9,9}的简单方法是什么?

我需要这个的原因是我正在绘制列表中的元素并需要制作一个"步骤图".

c# linq

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