Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit572ffe0

Browse files
RikkiGibsondsyme
authored andcommitted
[CompilerPerf] Performance improvement in ComputeUngeneralizeableTypars (#3065)
* Minor cleanup to TypeChecker signature - removed duplicated return value* Changed a bunch of set unioning to use an array instead* Used Add in a loop in ComputeUngeneralizableTypars, cut 5% of main0 runtime
1 parent0bc0263 commit572ffe0

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

‎src/fsharp/TypeChecker.fs‎

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,24 +2059,16 @@ type GeneralizeConstrainedTyparOptions =
20592059
module GeneralizationHelpers =
20602060
let ComputeUngeneralizableTypars env =
20612061

2062-
// This is just a List.fold. Unfolded here to enable better profiling
2063-
let rec loop acc (items: UngeneralizableItem list) =
2064-
match items with
2065-
| [] -> acc
2066-
| item::rest ->
2067-
let acc =
2068-
if item.WillNeverHaveFreeTypars then
2069-
acc
2070-
else
2071-
let ftps = item.GetFreeTyvars().FreeTypars
2072-
if ftps.IsEmpty then
2073-
acc
2074-
else
2075-
// These union operations are a performance sore point
2076-
unionFreeTypars ftps acc
2077-
loop acc rest
2062+
let acc = Collections.Generic.List()
2063+
for item in env.eUngeneralizableItems do
2064+
if not item.WillNeverHaveFreeTypars then
2065+
let ftps = item.GetFreeTyvars().FreeTypars
2066+
if not ftps.IsEmpty then
2067+
for ftp in ftps do
2068+
acc.Add(ftp)
2069+
2070+
Zset.Create(typarOrder, acc)
20782071

2079-
loop emptyFreeTypars env.eUngeneralizableItems
20802072

20812073
let ComputeUnabstractableTycons env =
20822074
let acc_in_free_item acc (item: UngeneralizableItem) =

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp