Skip to content

Commit db2783b

Browse files
perf: use Enumerable.Chunk for .NET 6+ in ChunkList
- Use built-in Enumerable.Chunk for .NET 6.0 and greater - Fall back to manual implementation for older frameworks - Improves performance on modern .NET versions Addresses feedback from PR #150
1 parent bb2f7e3 commit db2783b

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/OpenFga.Sdk/Client/Utils/ClientUtils.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,19 @@ public static IEnumerable<List<T>> ChunkList<T>(List<T> source, int chunkSize) {
2828
if (source == null) throw new ArgumentNullException(nameof(source));
2929
if (chunkSize <= 0) throw new ArgumentException("Chunk size must be greater than 0", nameof(chunkSize));
3030

31+
#if NET6_0_OR_GREATER
32+
// Use built-in Enumerable.Chunk for .NET 6+
33+
return source.Chunk(chunkSize).Select(chunk => chunk.ToList());
34+
#else
35+
// Manual implementation for older frameworks
36+
return ChunkListManual(source, chunkSize);
37+
}
38+
39+
private static IEnumerable<List<T>> ChunkListManual<T>(List<T> source, int chunkSize) {
3140
for (int i = 0; i < source.Count; i += chunkSize) {
3241
yield return source.GetRange(i, Math.Min(chunkSize, source.Count - i));
3342
}
43+
#endif
3444
}
3545

3646
/// <summary>

0 commit comments

Comments
 (0)