Skip to content

Conversation

@eric-wang-1990
Copy link
Contributor

@eric-wang-1990 eric-wang-1990 commented Nov 4, 2025

This commit enhances the CloudFetch benchmark suite to support testing on .NET Framework 4.7.2, which is the runtime used by Power BI. There are some notable difference in .NET472 vs .NET8.0, one of them is /K4os.Compression.LZ4 use the DefaultArrayPool in .NET472 which has a 1 MB upper limit for array size, where .NET8.0 use the SharedArrayPool which almost have no size limit.

Changes:

  • Add net472 target framework to Benchmarks.csproj
  • Make Tests project reference conditional (net8.0 only, since Tests doesn't support net472)
  • Enable TLS 1.2/1.3 in CloudFetchBenchmarkRunner for .NET Framework
  • Enable TLS 1.2/1.3 in benchmark GlobalSetup for spawned processes

These changes are necessary because .NET Framework 4.7.2 doesn't enable modern TLS protocols by default, which are required for Databricks HTTPS connections. This allows accurate performance testing on the Power BI runtime environment (net472 with DefaultArrayPool).

Command:
dotnet run -c Release --project Benchmarks/Benchmarks.csproj --framework net472 CloudFetchBenchmarkRunner
Sample output:

Method ReadDelayMs Mean Min Max Median Peak Memory (MB) Total Rows Total Batches Gen0 Gen1 Gen2 Allocated
ExecuteLargeQuery 5 9.659 s 9.016 s 10.03 s 9.928 s 356.38 1,439,935 740 336000.0000 57000.0000 35000.0000 2.73 GB

🤖 Generated with Claude Code

…nfiguration

This commit enhances the CloudFetch benchmark suite to support testing on
.NET Framework 4.7.2, which is the runtime used by Power BI.

Changes:
- Add net472 target framework to Benchmarks.csproj
- Make Tests project reference conditional (net8.0 only, since Tests doesn't support net472)
- Enable TLS 1.2/1.3 in CloudFetchBenchmarkRunner for .NET Framework
- Enable TLS 1.2/1.3 in benchmark GlobalSetup for spawned processes

These changes are necessary because .NET Framework 4.7.2 doesn't enable
modern TLS protocols by default, which are required for Databricks HTTPS
connections. This allows accurate performance testing on the Power BI
runtime environment (net472 with DefaultArrayPool).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Copy link
Contributor

@CurtHagenlocher CurtHagenlocher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Instead of conditionally compiling for .NET 8.0, can we change the target frameworks so they only target .NET 4.7.2 when built on Windows?

Address review feedback: Instead of conditionally including the Tests
project reference based on TargetFramework, use the same pattern as
the Tests project itself with conditional TargetFrameworks based on
the IsWindows property.

This ensures net472 is only targeted on Windows platforms where it's
supported, making the Tests project reference always compatible.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
* limitations under the License.
*/

#if NET8_0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still need the #ifs in this file?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not needed

Address review feedback: Remove #if NET8_0 preprocessor directives
since the Tests project is now available for both net8.0 and net472
on Windows due to the conditional TargetFrameworks approach.

The Apache.Arrow.Adbc.Tests project reference is now always available
for all target frameworks that the Benchmarks project builds for.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@CurtHagenlocher CurtHagenlocher merged commit d18e84d into apache:main Nov 4, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants