1- using System . Linq ;
2-
3- namespace BenchmarkRunner . Utils ;
4-
5- public static class Helpers
6- {
7- public static void InvokeGarbageCollection ( )
8- {
9- GC . Collect ( ) ;
10- GC . WaitForPendingFinalizers ( ) ;
11- GC . Collect ( ) ;
12- }
13-
14- public static async Task InsertInBatchesAsync < T > ( List < T > items , int batchSize , Func < List < T > , Task > insertBatch )
15- {
16- for ( int i = 0 ; i < items . Count ; i += batchSize )
17- {
18- var batch = items . Skip ( i ) . Take ( batchSize ) . ToList ( ) ;
19- await insertBatch ( batch ) ;
20- }
21- }
22-
23- public static async Task < List < T > > ExecuteConcurrentlyAsync < T > ( int concurrency , Func < int , Task < List < T > > > taskFactory )
24- {
25- var tasks = new List < Task < List < T > > > ( ) ;
26- for ( int i = 0 ; i < concurrency ; i ++ )
27- {
28- tasks . Add ( taskFactory ( i ) ) ;
29- }
30-
31- var results = await Task . WhenAll ( tasks ) ;
32- return [ .. results . SelectMany ( r => r ) ] ;
33- }
34- }
35-
1+ using System . Linq ;
2+
3+ namespace BenchmarkRunner . Utils ;
4+
5+ public static class Helpers
6+ {
7+ public static void InvokeGarbageCollection ( )
8+ {
9+ GC . Collect ( ) ;
10+ GC . WaitForPendingFinalizers ( ) ;
11+ GC . Collect ( ) ;
12+ }
13+
14+ public static async Task InsertInBatchesAsync < T > ( List < T > items , int batchSize , Func < List < T > , Task > insertBatch )
15+ {
16+ for ( int i = 0 ; i < items . Count ; i += batchSize )
17+ {
18+ var batch = items . Skip ( i ) . Take ( batchSize ) . ToList ( ) ;
19+ await insertBatch ( batch ) ;
20+ }
21+ }
22+
23+ public static async Task < List < T > > ExecuteConcurrentlyAsync < T > ( int concurrency , Func < int , Task < List < T > > > taskFactory )
24+ {
25+ var tasks = new List < Task < List < T > > > ( ) ;
26+ for ( int i = 0 ; i < concurrency ; i ++ )
27+ {
28+ tasks . Add ( taskFactory ( i ) ) ;
29+ }
30+
31+ var results = await Task . WhenAll ( tasks ) ;
32+ return [ .. results . SelectMany ( r => r ) ] ;
33+ }
34+ }
0 commit comments