diff --git a/src/uu/sort/BENCHMARKING.md b/src/uu/sort/BENCHMARKING.md
index 78c2e2b2d..1caea0326 100644
--- a/src/uu/sort/BENCHMARKING.md
+++ b/src/uu/sort/BENCHMARKING.md
@@ -90,3 +90,44 @@ duplicate the string you passed to hyperfine but remove the `target/release/core
Example: `hyperfine "target/release/coreutils sort shuffled_numbers_si.txt -h -o output.txt"` becomes
`hyperfine "target/release/coreutils sort shuffled_numbers_si.txt -h -o output.txt" "sort shuffled_numbers_si.txt -h -o output.txt"`
(This assumes GNU sort is installed as `sort`)
+
+## Memory and CPU usage
+
+The above benchmarks use hyperfine to measure the speed of sorting. There are however other useful metrics to determine overall
+resource usage. One way to measure them is the `time` command. This is not to be confused with the `time` that is built in to the bash shell.
+You may have to install `time` first, then you have to run it with `/bin/time -v` to give it precedence over the built in `time`.
+
+
+ Example output
+
+ Command being timed: "target/release/coreutils sort shuffled_numbers.txt"
+ User time (seconds): 0.10
+ System time (seconds): 0.00
+ Percent of CPU this job got: 365%
+ Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
+ Average shared text size (kbytes): 0
+ Average unshared data size (kbytes): 0
+ Average stack size (kbytes): 0
+ Average total size (kbytes): 0
+ Maximum resident set size (kbytes): 25360
+ Average resident set size (kbytes): 0
+ Major (requiring I/O) page faults: 0
+ Minor (reclaiming a frame) page faults: 5802
+ Voluntary context switches: 462
+ Involuntary context switches: 73
+ Swaps: 0
+ File system inputs: 1184
+ File system outputs: 0
+ Socket messages sent: 0
+ Socket messages received: 0
+ Signals delivered: 0
+ Page size (bytes): 4096
+ Exit status: 0
+
+
+
+Useful metrics to look at could be:
+
+- User time
+- Percent of CPU this job got
+- Maximum resident set size
diff --git a/src/uu/sort/src/sort.rs b/src/uu/sort/src/sort.rs
index c097861fc..07b852921 100644
--- a/src/uu/sort/src/sort.rs
+++ b/src/uu/sort/src/sort.rs
@@ -985,7 +985,11 @@ fn exec_check_file(unwrapped_lines: &[Line], settings: &GlobalSettings) -> i32 {
}
fn sort_by(lines: &mut Vec, settings: &GlobalSettings) {
- lines.par_sort_by(|a, b| compare_by(a, b, &settings))
+ if settings.stable || settings.unique {
+ lines.par_sort_by(|a, b| compare_by(a, b, &settings))
+ } else {
+ lines.par_sort_unstable_by(|a, b| compare_by(a, b, &settings))
+ }
}
fn compare_by(a: &Line, b: &Line, global_settings: &GlobalSettings) -> Ordering {