-
Notifications
You must be signed in to change notification settings - Fork 12.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove stableSort, rename sort to toSorted #55728
Conversation
@typescript-bot perf test this faster |
Heya @jakebailey, I've started to run the bun perf test suite on this PR at 3cd2a41. You can monitor the build here. Update: The results are in! |
Heya @jakebailey, I've started to run the tsc-only perf test suite on this PR at 3cd2a41. You can monitor the build here. Update: The results are in! |
@jakebailey Here they are:
CompilerComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
StartupComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
Developer Information: |
@jakebailey Here they are:
CompilerComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
Developer Information: |
yeah i'm sorry to tell you but your buns are performing poorly. they're probably overcooked so people hate them |
src/compiler/core.ts
Outdated
@@ -835,7 835,7 @@ export function sortAndDeduplicate<T>(array: readonly string[]): SortedReadonlyA | |||
export function sortAndDeduplicate<T>(array: readonly T[], comparer: Comparer<T>, equalityComparer?: EqualityComparer<T>): SortedReadonlyArray<T>; | |||
/** @internal */ | |||
export function sortAndDeduplicate<T>(array: readonly T[], comparer?: Comparer<T>, equalityComparer?: EqualityComparer<T>): SortedReadonlyArray<T> { | |||
return deduplicateSorted(sort(array, comparer), equalityComparer || comparer || compareStringsCaseSensitive as any as Comparer<T>); | |||
return deduplicateSorted(toSorted(array, comparer), equalityComparer || comparer || compareStringsCaseSensitive as any as Comparer<T>); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have always wondered, given deduplicateSorted
used only by sortAndDeduplicate
can we mark it to make readyOnly to ReadWrite array when length is not zero and work on that array itself instead of creating new array.
@typescript-bot perf test this |
@jakebailey Here they are:
tscComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
tsserverComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
startupComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
Developer Information: |
mozilla/rhino#1151 is now closed; rhino now has a stable sort. Is this safe to merge or should we wait a while? |
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#sort_stability
Also,
toSorted
seems to be sightly slower thanarr.slice().sort()
; was hoping to also renamesort
totoSorted
and conditionally use it, but probably not worth it yet.