c#中最快的获取整型列表子集的方法
本文关键字:列表 子集 方法 整型 获取 | 更新日期: 2023-09-27 18:12:58
我得到5个列表,我需要所有的子集。
- I) 200.000整数值
- II) 30000整数值
- III) 10000个整数值
- IV) 200个整数值
A n B n C n D.我需要1000个并发用户。
- 用c#来做这个最快的方法是什么?
- 有多少并发操作我可以做一个2 mhz的CPU ?20亿循环速度
处理多个集合交集的最快方法是与语言无关的:创建一个HashSet<int>
,用最短列表中的数据初始化它,然后依次调用剩余列表中的IntersectWith
。您需要从最短的列表开始,因为操作的复杂性是O(n+m)
,其中n
是HashSet<int>
中的项数,m
是另一个列表中的项数。由于IntersectWith
将被调用四次,并且设置初始HashSet<int>
的复杂度为O(n)
,因此总体复杂度为
O( n + n+m1 + n+m2 + n+m3 + n+m4)
// ^ ^ ^ ^ ^
// | | | | |
// | Intersecting with lists 2..5
// |
// Setting up the initial HashSet<int>
由于总数是O(5*n+m1+m2+m3+m4)
,所以最好的方法是选择最短的列表来制作初始集合。