查找并发项目数

Find count of concurrent items

我并行执行了 48 个条目,我想绘制一个图表,说明我每次有多少个线程 Parallel.ForEach 运行。

我制作了如下所示的调试输出,其中相邻的 start/end 行来自同一线程。为了快速获得结果,我进入 Excel 并将它们放入 A 列:

A
61771961 ParallEx starts
61773115 ParallEx ends
61771961 ParallEx starts
61773271 ParallEx ends
61771961 ParallEx starts
61773287 ParallEx ends
61771961 ParallEx starts
61773318 ParallEx ends

现在我使用 =VALUE(MID(A1; 1; 8)) 来获取以下形式的值对:

B           C
61771961    61773115

61771961    61773271

61771961    61773287

61771961    61773318

...

然后我将数字 1..96 放入 D 列,并使用 =SMALL(B:C;D1) 获取任何线程发生更改的时间点的有序列表:

D   E
1   61771961
2   61771961
3   61771961
4   61771961
5   61772507
6   61773037
7   61773115
8   61773115
9   ...

然后我想知道在每个有趣的时间点我有多少线程运行:

=SUMIFS(B:B;CONCATENATE(">=";E1);C:C;CONCATENATE("<=";E1))

但结果始终为零。我的错误在哪里?

根据您的示例,您在 C 列中的值都大于您在 E 列中的值。

C 列:61773115 E 列:61771961 您的 sumifs 正在寻找小于或等于 E 列的列,这应该可以正常工作,但它也在寻找 C 列小于它没有找到的 E 列

希望对您有所帮助