Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions global.net10.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"sdk": {
"version": "10.0.100",
"allowPrerelease": true,
"rollForward": "latestMinor"
},
"tools": {
"dotnet": "10.0.100"
},
"msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25604.105",
"Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25604.105"
},
"native-tools": {
"python3": "3.7.1"
}
}
6 changes: 6 additions & 0 deletions scripts/ci_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,12 @@ def main(args: CiSetupArgs):
dotnet.setup_dotnet(args.dotnet_path)

framework = ChannelMap.get_target_framework_moniker(args.channel)

if framework in ('net10.0', 'nativeaot10.0'):
global_json_path = os.path.join(get_repo_root_path(), 'global.json')
shutil.copy(os.path.join(get_repo_root_path(), 'global.net10.json'), global_json_path)
getLogger().info('Overwrote global.json with global.net10.json')

if framework in ('net9.0', 'nativeaot9.0'):
global_json_path = os.path.join(get_repo_root_path(), 'global.json')
shutil.copy(os.path.join(get_repo_root_path(), 'global.net9.json'), global_json_path)
Expand Down
2 changes: 2 additions & 0 deletions scripts/micro_benchmarks.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,8 @@ def __get_benchmarkdotnet_arguments(framework: str, args: Any) -> list[str]:
run_args += ['--runtimes', 'wasmnet90']
elif framework == "net10.0":
run_args += ['--runtimes', 'wasmnet10_0']
elif framework == "net11.0":
run_args += ['--runtimes', 'wasmnet11_0']
else:
raise ArgumentTypeError('Framework {} is not supported for wasm'.format(framework))

Expand Down
2 changes: 1 addition & 1 deletion src/benchmarks/micro/MicroBenchmarks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<!-- Supported target frameworks -->
<SupportedTargetFrameworks>net6.0;net7.0;net8.0;net9.0;net10.0</SupportedTargetFrameworks>
<SupportedTargetFrameworks>net6.0;net7.0;net8.0;net9.0;net10.0;net11.0</SupportedTargetFrameworks>
<SupportedTargetFrameworks Condition="'$(OS)' == 'Windows_NT'">$(SupportedTargetFrameworks);net472</SupportedTargetFrameworks>
<!-- Used by Python script to narrow down the specified target frameworks to test, and avoid downloading all supported SDKs -->
<TargetFrameworks>$(PERFLAB_TARGET_FRAMEWORKS)</TargetFrameworks>
Expand Down
16 changes: 8 additions & 8 deletions src/benchmarks/micro/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,53 +12,53 @@ To learn more about designing benchmarks, please read [Microbenchmark Design Gui

## Quick Start

The first thing that you need to choose is the Target Framework. Available options are: `netcoreapp3.1|net6.0|net7.0|net8.0|net9.0|net10.0|net472`. You can specify the target framework using `-f|--framework` argument. For the sake of simplicity, all examples below use `net10.0` as the target framework.
The first thing that you need to choose is the Target Framework. Available options are: `netcoreapp3.1|net6.0|net7.0|net8.0|net9.0|net10.0|net11.0|net472`. You can specify the target framework using `-f|--framework` argument. For the sake of simplicity, all examples below use `net11.0` as the target framework.

The following commands are run from the `src/benchmarks/micro` directory.

To run the benchmarks in Interactive Mode, where you will be asked which benchmark(s) to run:

```cmd
dotnet run -c Release -f net10.0
dotnet run -c Release -f net11.0
```

To list all available benchmarks ([read more](../../../docs/benchmarkdotnet.md#Listing-the-Benchmarks)):

```cmd
dotnet run -c Release -f net10.0 --list flat|tree
dotnet run -c Release -f net11.0 --list flat|tree
```

To filter the benchmarks using a glob pattern applied to namespace.typeName.methodName ([read more](../../../docs/benchmarkdotnet.md#Filtering-the-Benchmarks)):

```cmd
dotnet run -c Release -f net10.0 --filter *Span*
dotnet run -c Release -f net11.0 --filter *Span*
```

To profile the benchmarked code and produce an ETW Trace file ([read more](../../../docs/benchmarkdotnet.md#Profiling)):

```cmd
dotnet run -c Release -f net10.0 --filter $YourFilter --profiler ETW
dotnet run -c Release -f net11.0 --filter $YourFilter --profiler ETW
```

To run the benchmarks for multiple runtimes ([read more](../../../docs/benchmarkdotnet.md#Multiple-Runtimes)):

```cmd
dotnet run -c Release -f net8.0 --filter * --runtimes net8.0 net10.0
dotnet run -c Release -f net10.0 --filter * --runtimes net10.0 net11.0
```

## Private Runtime Builds

If you contribute to [dotnet/runtime](https://github.com/dotnet/runtime) and want to benchmark **local builds of .NET Core** you need to build [dotnet/runtime](https://github.com/dotnet/runtime) in Release (including tests - so a command similar to `build clr+libs+libs.tests -rc release -lc release`) and then provide the path(s) to CoreRun(s). Provided CoreRun(s) will be used to execute every benchmark in a dedicated process:

```cmd
dotnet run -c Release -f net10.0 --filter $YourFilter \
dotnet run -c Release -f net11.0 --filter $YourFilter \
--corerun C:\git\runtime\artifacts\bin\testhost\net10.0-windows-Release-x64\shared\Microsoft.NETCore.App\9.0.0\CoreRun.exe
```

To make sure that your changes don't introduce any regressions, you can provide paths to CoreRuns with and without your changes and use the Statistical Test feature to detect regressions/improvements ([read more](../../../docs/benchmarkdotnet.md#Regressions)):

```cmd
dotnet run -c Release -f net10.0 \
dotnet run -c Release -f net11.0 \
--filter BenchmarksGame* \
--statisticalTest 3ms \
--coreRun \
Expand Down
5 changes: 5 additions & 0 deletions src/scenarios/build-common/Blazor.PackageVersions.props
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
<Project>
<PropertyGroup Condition="$(TargetFrameworks.Contains('net11.0')) or ($(TargetFrameworkVersion) != '' and $([MSBuild]::VersionEquals('$(TargetFrameworkVersion)', '11.0')))">
<AspNetCoreVersion>11.0.0-*</AspNetCoreVersion>
<BlazorVersion>11.0.0-*</BlazorVersion>
<SystemNetHttpJsonVersion>11.0.0-*</SystemNetHttpJsonVersion>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFrameworks.Contains('net10.0')) or ($(TargetFrameworkVersion) != '' and $([MSBuild]::VersionEquals('$(TargetFrameworkVersion)', '10.0')))">
<AspNetCoreVersion>10.0.0-*</AspNetCoreVersion>
<BlazorVersion>10.0.0-*</BlazorVersion>
Expand Down
Loading