diff --git a/Directory.Build.props b/Directory.Build.props
index 879bd89410f..10c53909035 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -16,6 +16,10 @@
true
+
+ true
+
+
true
diff --git a/FSharp.Benchmarks.sln b/FSharp.Benchmarks.sln
index 04af0d6830d..2ace22c1515 100644
--- a/FSharp.Benchmarks.sln
+++ b/FSharp.Benchmarks.sln
@@ -24,8 +24,6 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Benchmarks"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FCSSourceFiles", "tests\benchmarks\FCSBenchmarks\FCSSourceFiles\FCSSourceFiles.fsproj", "{0E2A7B27-3AD3-4C1D-BA0D-008A1200946F}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsharp.ProfilingStartpointProject", "tests\benchmarks\Fsharp.ProfilingStartpointProject\Fsharp.ProfilingStartpointProject.fsproj", "{9F27346B-2FC6-4FD5-A932-4E80F331E6D6}"
-EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Test.Utilities", "tests\FSharp.Test.Utilities\FSharp.Test.Utilities.fsproj", "{0B149238-0912-493E-8877-F831AE01B942}"
EndProject
Global
@@ -105,12 +103,6 @@ Global
{0E2A7B27-3AD3-4C1D-BA0D-008A1200946F}.Release|Any CPU.Build.0 = Release|Any CPU
{0E2A7B27-3AD3-4C1D-BA0D-008A1200946F}.ReleaseCompressed|Any CPU.ActiveCfg = Debug|Any CPU
{0E2A7B27-3AD3-4C1D-BA0D-008A1200946F}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
- {9F27346B-2FC6-4FD5-A932-4E80F331E6D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9F27346B-2FC6-4FD5-A932-4E80F331E6D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9F27346B-2FC6-4FD5-A932-4E80F331E6D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9F27346B-2FC6-4FD5-A932-4E80F331E6D6}.Release|Any CPU.Build.0 = Release|Any CPU
- {9F27346B-2FC6-4FD5-A932-4E80F331E6D6}.ReleaseCompressed|Any CPU.ActiveCfg = Debug|Any CPU
- {9F27346B-2FC6-4FD5-A932-4E80F331E6D6}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
{0B149238-0912-493E-8877-F831AE01B942}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B149238-0912-493E-8877-F831AE01B942}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0B149238-0912-493E-8877-F831AE01B942}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/VisualFSharp.sln b/VisualFSharp.sln
index b7b9e82b5dc..485d887f3ce 100644
--- a/VisualFSharp.sln
+++ b/VisualFSharp.sln
@@ -189,8 +189,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FCSBenchmarks", "FCSBenchma
tests\benchmarks\FCSBenchmarks\SmokeTestAllBenchmarks.ps1 = tests\benchmarks\FCSBenchmarks\SmokeTestAllBenchmarks.ps1
EndProjectSection
EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fsharp.ProfilingStartpointProject", "tests\benchmarks\Fsharp.ProfilingStartpointProject\Fsharp.ProfilingStartpointProject.fsproj", "{FE23BB65-276A-4E41-8CC7-F7752241DEBA}"
-EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Editor.Tests", "vsintegration\tests\FSharp.Editor.Tests\FSharp.Editor.Tests.fsproj", "{CBC96CC7-65AB-46EA-A82E-F6A788DABF80}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FSharp.Editor.IntegrationTests", "vsintegration\tests\FSharp.Editor.IntegrationTests\FSharp.Editor.IntegrationTests.csproj", "{E31F9B59-FCF1-4D04-8762-C7BB60285A7B}"
@@ -997,18 +995,6 @@ Global
{583182E1-3484-4A8F-AC06-7C0D232C0CA4}.Release|Any CPU.Build.0 = Release|Any CPU
{583182E1-3484-4A8F-AC06-7C0D232C0CA4}.Release|x86.ActiveCfg = Release|Any CPU
{583182E1-3484-4A8F-AC06-7C0D232C0CA4}.Release|x86.Build.0 = Release|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Debug|x86.ActiveCfg = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Debug|x86.Build.0 = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Proto|Any CPU.Build.0 = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Proto|x86.ActiveCfg = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Proto|x86.Build.0 = Debug|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Release|Any CPU.Build.0 = Release|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Release|x86.ActiveCfg = Release|Any CPU
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA}.Release|x86.Build.0 = Release|Any CPU
{CBC96CC7-65AB-46EA-A82E-F6A788DABF80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBC96CC7-65AB-46EA-A82E-F6A788DABF80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBC96CC7-65AB-46EA-A82E-F6A788DABF80}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -1111,7 +1097,6 @@ Global
{EB015235-1E07-4CDA-9CC6-3FBCC27910D1} = {B8DDA694-7939-42E3-95E5-265C2217C142}
{583182E1-3484-4A8F-AC06-7C0D232C0CA4} = {39CDF34B-FB23-49AE-AB27-0975DA379BB5}
{39CDF34B-FB23-49AE-AB27-0975DA379BB5} = {DFB6ADD7-3149-43D9-AFA0-FC4A818B472B}
- {FE23BB65-276A-4E41-8CC7-F7752241DEBA} = {39CDF34B-FB23-49AE-AB27-0975DA379BB5}
{CBC96CC7-65AB-46EA-A82E-F6A788DABF80} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}
{E31F9B59-FCF1-4D04-8762-C7BB60285A7B} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}
EndGlobalSection
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 94bba597e8a..1de2f4309f8 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -713,6 +713,33 @@ stages:
continueOnError: true
condition: always()
+ # Build benchmarks
+ - job: Plain_Build_Benchmarks
+ pool:
+ name: $(DncEngPublicBuildPool)
+ demands: ImageOverride -equals $(WindowsMachineQueueName)
+ variables:
+ - name: _BuildConfig
+ value: Debug
+ steps:
+ - checkout: self
+ clean: true
+ - script: dotnet --list-sdks
+ displayName: Report dotnet SDK versions
+ - task: UseDotNet@2
+ displayName: install SDK
+ inputs:
+ packageType: sdk
+ useGlobalJson: true
+ includePreviewVersions: true
+ workingDirectory: $(Build.SourcesDirectory)
+ installationPath: $(Agent.ToolsDirectory)/dotnet
+ - script: dotnet build .\FSharp.Benchmarks.sln /bl:\"artifacts/log/$(_BuildConfig)/BenchmarkBuild.binlog\"
+ workingDirectory: $(Build.SourcesDirectory)
+ displayName: Regular rebuild of FSharp.Benchmarks.sln
+ continueOnError: true
+ condition: always()
+
# Test trimming on Windows
- job: Build_And_Test_Trimming_Windows
pool:
diff --git a/buildtools/AssemblyCheck/SkipVerifyEmbeddedPdb.txt b/buildtools/AssemblyCheck/SkipVerifyEmbeddedPdb.txt
index 9ea06757477..f823017f4a1 100644
--- a/buildtools/AssemblyCheck/SkipVerifyEmbeddedPdb.txt
+++ b/buildtools/AssemblyCheck/SkipVerifyEmbeddedPdb.txt
@@ -1,6 +1,5 @@
FSharp.Build.UnitTests.dll
FSharp.Compiler.Benchmarks.dll
-Fsharp.ProfilingStartpointProject.dll
FSharp.Compiler.ComponentTests.dll
FSharp.Test.Utilities.dll
FSharp.Compiler.Private.Scripting.UnitTests.dll
diff --git a/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/CS/MicroPerfCSharp.csproj b/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/CS/MicroPerfCSharp.csproj
index 96ac25da87b..50bba8f6f23 100644
--- a/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/CS/MicroPerfCSharp.csproj
+++ b/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/CS/MicroPerfCSharp.csproj
@@ -6,11 +6,10 @@
8.0
-
-
-
-
-
+
+
+ $(NoWarn);CS1591
+
diff --git a/tests/benchmarks/CompiledCodeBenchmarks/TaskPerf/TaskPerfCSharp/TaskPerfCSharp.csproj b/tests/benchmarks/CompiledCodeBenchmarks/TaskPerf/TaskPerfCSharp/TaskPerfCSharp.csproj
index a4e2d968480..d23714e40f2 100644
--- a/tests/benchmarks/CompiledCodeBenchmarks/TaskPerf/TaskPerfCSharp/TaskPerfCSharp.csproj
+++ b/tests/benchmarks/CompiledCodeBenchmarks/TaskPerf/TaskPerfCSharp/TaskPerfCSharp.csproj
@@ -6,6 +6,11 @@
8.0
+
+
+ $(NoWarn);CS1591
+
+
diff --git a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/DecentlySizedStandAloneFileBenchmark.fs b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/DecentlySizedStandAloneFileBenchmark.fs
index f1525cfc734..58dcb885e50 100644
--- a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/DecentlySizedStandAloneFileBenchmark.fs
+++ b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/DecentlySizedStandAloneFileBenchmark.fs
@@ -1,22 +1,61 @@
namespace FSharp.Compiler.Benchmarks
open System.IO
-open HistoricalBenchmark
+open FSharp.Compiler.CodeAnalysis
+open FSharp.Compiler.Text
open BenchmarkDotNet.Attributes
-type SingleFileCompilerWithILCacheClearing(file, options) =
- inherit SingleFileCompiler(file, options)
-
- override this.Cleanup() =
- base.Cleanup()
- FSharp.Compiler.AbstractIL.ILBinaryReader.ClearAllILModuleReaderCache()
+type private SingleFileCompilerConfig =
+ {
+ Checker : FSharpChecker
+ Options : FSharpProjectOptions
+ }
[]
type DecentlySizedStandAloneFileBenchmark() =
- inherit SingleFileCompilerBenchmarkBase(
- SingleFileCompilerWithILCacheClearing(
- Path.Combine(__SOURCE_DIRECTORY__, "../decentlySizedStandAloneFile.fs"),
- OptionsCreationMethod.FromScript
- )
- )
+ let mutable configOpt : SingleFileCompilerConfig option = None
+ let filePath = Path.Combine(__SOURCE_DIRECTORY__, "../decentlySizedStandAloneFile.fs")
+
+ let getFileSourceText (filePath : string) =
+ let text = File.ReadAllText(filePath)
+ SourceText.ofString text
+
+ let getConfig () =
+ configOpt
+ |> Option.defaultWith (fun () -> failwith "Setup not run")
+
+ []
+ member _.Setup() =
+ configOpt <-
+ match configOpt with
+ | Some _ -> configOpt
+ | None ->
+ let checker = FSharpChecker.Create(projectCacheSize = 200)
+ let options =
+ checker.GetProjectOptionsFromScript(filePath, getFileSourceText filePath)
+ |> Async.RunSynchronously
+ |> fst
+ {
+ Checker = checker
+ Options = options
+ }
+ |> Some
+
+ []
+ member _.Run() =
+ let config = getConfig()
+ let _, result =
+ config.Checker.ParseAndCheckFileInProject(filePath, 0, getFileSourceText filePath, config.Options)
+ |> Async.RunSynchronously
+
+ match result with
+ | FSharpCheckFileAnswer.Aborted -> failwith "checker aborted"
+ | FSharpCheckFileAnswer.Succeeded results ->
+ if results.Diagnostics.Length > 0 then failwithf $"had errors: %A{results.Diagnostics}"
+
+ []
+ member _.Cleanup() =
+ let checker = getConfig().Checker
+ checker.InvalidateAll()
+ checker.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients()
diff --git a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj
index 19c7f7a7e96..8e7c69e9be4 100644
--- a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj
+++ b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj
@@ -24,7 +24,6 @@
-
diff --git a/tests/benchmarks/Fsharp.ProfilingStartpointProject/Fsharp.ProfilingStartpointProject.fsproj b/tests/benchmarks/Fsharp.ProfilingStartpointProject/Fsharp.ProfilingStartpointProject.fsproj
deleted file mode 100644
index 6cb9e4bd78c..00000000000
--- a/tests/benchmarks/Fsharp.ProfilingStartpointProject/Fsharp.ProfilingStartpointProject.fsproj
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Exe
- net8.0
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/benchmarks/Fsharp.ProfilingStartpointProject/Program.fs b/tests/benchmarks/Fsharp.ProfilingStartpointProject/Program.fs
deleted file mode 100644
index 5d851e60865..00000000000
--- a/tests/benchmarks/Fsharp.ProfilingStartpointProject/Program.fs
+++ /dev/null
@@ -1,47 +0,0 @@
-open FSharp.Compiler.Benchmarks
-
-open System
-open System.IO
-open System.Text
-open FSharp.Compiler.CodeAnalysis
-open FSharp.Compiler.Diagnostics
-open FSharp.Compiler.EditorServices
-open FSharp.Compiler.Text
-open FSharp.Compiler.AbstractIL.IL
-open FSharp.Compiler.AbstractIL.ILBinaryReader
-open BenchmarkDotNet.Attributes
-open FSharp.Compiler.Benchmarks
-open Microsoft.CodeAnalysis.Text
-open BenchmarkDotNet.Order
-open BenchmarkDotNet.Mathematics
-
-let bench = new FileCascadeBenchmarks()
-bench.GenerateFSI <- true
-do bench.Setup()
-
-(*
-This project was created as an easy entry point for low-level profiling of FCS operations.
-The only purpose is the easy of setup (simply set as startup project and launch) so that a profiler can be connected.
-There is definitely no harm in deleting it if it starts bothering anyone.
-*)
-
-
-[]
-let main args =
-
- match args |> Array.toList with
- | ["no-change"] ->
- for i=1 to 256 do
- printfn "***************************"
- printfn "ITERATION %i" i
- printfn "***************************"
- bench.ParseAndCheckLastFileProjectAsIs() |> ignore
- | ["mid-change"] ->
- for i=1 to 16 do
- printfn "***************************"
- printfn "ITERATION %i" i
- printfn "***************************"
- bench.ParseProjectWithChangingMiddleFile() |> ignore
- | _ -> failwith "Invalid args. Use cache-clear or mid-change"
- |> ignore
- 0