Skip to content

Add benchmarks for reading 65K records across multiple Excel formats #37

Add benchmarks for reading 65K records across multiple Excel formats

Add benchmarks for reading 65K records across multiple Excel formats #37

Triggered via pull request July 8, 2026 19:46
Status Success
Total duration 3m 25s
Artifacts –

benchmark-pr.yml

on: pull_request
Matrix: benchmark
Post PR Comment
7s
Post PR Comment
Fit to window
Zoom out
Zoom in

Annotations

50 warnings
Run (read): src/ExcelReader.Core/Reader/XlsbReader.Enumerator.cs#L18
'Enumerator' contains field '_reader' that is of IDisposable type 'XlsbReader', but it is never disposed. Change the Dispose method on 'Enumerator' to call Close or Dispose on this field. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2213)
Run (read): src/ExcelReader.Core/Reader/XlsReader.cs#L113
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (read): src/ExcelReader.Core/Reader/XlsReader.cs#L108
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (read): src/ExcelReader.Core/Reader/XlsReader.cs#L113
'XlsReader.GetAsyncEnumerator(CancellationToken)' synchronously blocks. Await 'XlsReader.GetAsyncEnumeratorAsync(CancellationToken)' instead. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1849)
Run (read): src/ExcelReader.Core/Writer/XlsbSheetWriter.cs#L76
Call System.IDisposable.Dispose on object created by 'new XlsbRowWriter(this)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (parse): src/ExcelReader.Core/Reader/XlsbReader.Enumerator.cs#L18
'Enumerator' contains field '_reader' that is of IDisposable type 'XlsbReader', but it is never disposed. Change the Dispose method on 'Enumerator' to call Close or Dispose on this field. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2213)
Run (parse): src/ExcelReader.Core/Writer/XlsbSheetWriter.cs#L76
Call System.IDisposable.Dispose on object created by 'new XlsbRowWriter(this)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (parse): src/ExcelReader.Core/Reader/XlsReader.cs#L113
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (parse): src/ExcelReader.Core/Reader/XlsReader.cs#L113
'XlsReader.GetAsyncEnumerator(CancellationToken)' synchronously blocks. Await 'XlsReader.GetAsyncEnumeratorAsync(CancellationToken)' instead. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1849)
Run (parse): src/ExcelReader.Core/Reader/XlsReader.cs#L108
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (xls): src/ExcelReader.Core/Writer/XlsbSheetWriter.cs#L76
Call System.IDisposable.Dispose on object created by 'new XlsbRowWriter(this)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (xls): src/ExcelReader.Core/Reader/XlsReader.cs#L113
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (xls): src/ExcelReader.Core/Reader/XlsReader.cs#L113
'XlsReader.GetAsyncEnumerator(CancellationToken)' synchronously blocks. Await 'XlsReader.GetAsyncEnumeratorAsync(CancellationToken)' instead. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1849)
Run (xls): src/ExcelReader.Core/Reader/XlsReader.cs#L108
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (xls): src/ExcelReader.Core/Reader/XlsbReader.Enumerator.cs#L18
'Enumerator' contains field '_reader' that is of IDisposable type 'XlsbReader', but it is never disposed. Change the Dispose method on 'Enumerator' to call Close or Dispose on this field. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2213)
Run (write): src/ExcelReader.Core/Reader/XlsbReader.Enumerator.cs#L18
'Enumerator' contains field '_reader' that is of IDisposable type 'XlsbReader', but it is never disposed. Change the Dispose method on 'Enumerator' to call Close or Dispose on this field. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2213)
Run (write): src/ExcelReader.Core/Reader/XlsReader.cs#L113
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (write): src/ExcelReader.Core/Reader/XlsReader.cs#L113
'XlsReader.GetAsyncEnumerator(CancellationToken)' synchronously blocks. Await 'XlsReader.GetAsyncEnumeratorAsync(CancellationToken)' instead. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1849)
Run (write): src/ExcelReader.Core/Reader/XlsReader.cs#L108
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (write): src/ExcelReader.Core/Writer/XlsbSheetWriter.cs#L76
Call System.IDisposable.Dispose on object created by 'new XlsbRowWriter(this)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (csv): src/ExcelReader.Core/Reader/XlsbReader.Enumerator.cs#L18
'Enumerator' contains field '_reader' that is of IDisposable type 'XlsbReader', but it is never disposed. Change the Dispose method on 'Enumerator' to call Close or Dispose on this field. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2213)
Run (csv): src/ExcelReader.Core/Reader/XlsReader.cs#L113
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (csv): src/ExcelReader.Core/Reader/XlsReader.cs#L108
Call System.IDisposable.Dispose on object created by 'GetAsyncEnumerator(ct)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)
Run (csv): src/ExcelReader.Core/Reader/XlsReader.cs#L113
'XlsReader.GetAsyncEnumerator(CancellationToken)' synchronously blocks. Await 'XlsReader.GetAsyncEnumeratorAsync(CancellationToken)' instead. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1849)
Run (csv): src/ExcelReader.Core/Writer/XlsbSheetWriter.cs#L76
Call System.IDisposable.Dispose on object created by 'new XlsbRowWriter(this)' before all references to it are out of scope (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2000)