mirror of
https://github.com/sharkdp/hyperfine.git
synced 2026-10-28 08:08:58 +00:00
Support minutes, hours, and time unit aliases
This commit is contained in:
1 parent
16e23a1b42
commit
84ff04f35d
6 files changed
+42
-10
No files matched your search
@@ -2,6 +2,7 @@
|
||||
|
||||
## Features
|
||||
|
||||
- Add minutes and hours to `--time-unit`, along with abbreviated and plural unit names such as `ms`, `min`, and `hours` (@sharkdp)
|
||||
- Add `--reference-name` option to give a meaningful name to the reference command, see #808 (@niklasdewally)
|
||||
- The `--ignore-failure` option now supports a comma-separated list of exit codes to ignore (e.g., `--ignore-failure=1,2`), see #836 (@sharkdp)
|
||||
- Python scripts: Add `--time-unit` option to `advanced_statistics.py` (@sharkdp)
|
||||
|
||||
+15
-2
@@ -255,8 +255,21 @@ order benchmarks by mean runtime
|
||||
.HP
|
||||
\fB\-u\fR, \fB\-\-time\-unit\fR \fIUNIT\fP
|
||||
.IP
|
||||
Set the time unit to be used. Possible values: microsecond, millisecond, second. If
|
||||
the option is not given, the time unit is determined automatically.
|
||||
Set the time unit to be used. If the option is not given, the time unit is
|
||||
determined automatically. Possible values:
|
||||
.RS
|
||||
.IP "microsecond"
|
||||
Aliases: µs, us, microseconds.
|
||||
.IP "millisecond"
|
||||
Aliases: ms, milliseconds.
|
||||
.IP "second"
|
||||
Aliases: s, seconds.
|
||||
.IP "minute"
|
||||
Aliases: min, minutes.
|
||||
.IP "hour"
|
||||
Aliases: h, hours.
|
||||
.RE
|
||||
.IP
|
||||
This option affects the standard output as well as all export formats
|
||||
except for CSV and JSON.
|
||||
.HP
|
||||
|
||||
+9
-4
@@ -278,10 +278,15 @@ fn build_command() -> Command {
|
||||
.short('u')
|
||||
.action(ArgAction::Set)
|
||||
.value_name("UNIT")
|
||||
.value_parser(["microsecond", "millisecond", "second"])
|
||||
.help("Set the time unit to be used. Possible values: microsecond, millisecond, second. \
|
||||
If the option is not given, the time unit is determined automatically. \
|
||||
This option affects the standard output as well as all export formats except for CSV and JSON."),
|
||||
.value_parser(["µs", "us", "microsecond", "microseconds", "ms", "millisecond", "milliseconds", "s", "second", "seconds", "min", "minute", "minutes", "h", "hour", "hours"])
|
||||
.help("Set the time unit to be used. If the option is not given, the time unit is determined automatically. \
|
||||
This option affects the standard output as well as all export formats except for CSV and JSON.\n\
|
||||
Possible values:\n \
|
||||
* 'µs', 'us', 'microsecond', 'microseconds'\n \
|
||||
* 'ms', 'millisecond', 'milliseconds'\n \
|
||||
* 's', 'second', 'seconds'\n \
|
||||
* 'min', 'minute', 'minutes'\n \
|
||||
* 'h', 'hour', 'hours'"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("export-asciidoc")
|
||||
|
||||
+5
-3
@@ -429,9 +429,11 @@ impl Options {
|
||||
}
|
||||
|
||||
options.time_unit = match matches.get_one::<String>("time-unit").map(|s| s.as_str()) {
|
||||
Some("microsecond") => Some(Unit::MicroSecond),
|
||||
Some("millisecond") => Some(Unit::MilliSecond),
|
||||
Some("second") => Some(Unit::Second),
|
||||
Some("µs" | "us" | "microsecond" | "microseconds") => Some(Unit::MicroSecond),
|
||||
Some("ms" | "millisecond" | "milliseconds") => Some(Unit::MilliSecond),
|
||||
Some("s" | "second" | "seconds") => Some(Unit::Second),
|
||||
Some("min" | "minute" | "minutes") => Some(Unit::Minute),
|
||||
Some("h" | "hour" | "hours") => Some(Unit::Hour),
|
||||
_ => None,
|
||||
};
|
||||
|
||||
|
||||
@@ -21,7 +21,8 @@ pub fn format_duration_value(duration: Second, unit: Option<Unit>) -> (String, U
|
||||
} else if (duration < 1.0 && unit.is_none()) || unit == Some(Unit::MilliSecond) {
|
||||
(Unit::MilliSecond.format(duration), Unit::MilliSecond)
|
||||
} else {
|
||||
(Unit::Second.format(duration), Unit::Second)
|
||||
let unit = unit.unwrap_or(Unit::Second);
|
||||
(unit.format(duration), unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ pub enum Unit {
|
||||
Second,
|
||||
MilliSecond,
|
||||
MicroSecond,
|
||||
Minute,
|
||||
Hour,
|
||||
}
|
||||
|
||||
impl Unit {
|
||||
@@ -20,6 +22,8 @@ impl Unit {
|
||||
Unit::Second => String::from("s"),
|
||||
Unit::MilliSecond => String::from("ms"),
|
||||
Unit::MicroSecond => String::from("µs"),
|
||||
Unit::Minute => String::from("min"),
|
||||
Unit::Hour => String::from("h"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +33,8 @@ impl Unit {
|
||||
Unit::Second => format!("{value:.3}"),
|
||||
Unit::MilliSecond => format!("{:.1}", value * 1e3),
|
||||
Unit::MicroSecond => format!("{:.1}", value * 1e6),
|
||||
Unit::Minute => format!("{:.1}", value / 60.0),
|
||||
Unit::Hour => format!("{:.1}", value / 3600.0),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,6 +44,8 @@ fn test_unit_short_name() {
|
||||
assert_eq!("s", Unit::Second.short_name());
|
||||
assert_eq!("ms", Unit::MilliSecond.short_name());
|
||||
assert_eq!("µs", Unit::MicroSecond.short_name());
|
||||
assert_eq!("min", Unit::Minute.short_name());
|
||||
assert_eq!("h", Unit::Hour.short_name());
|
||||
}
|
||||
|
||||
// Note - the values are rounded when formatted.
|
||||
@@ -48,4 +56,6 @@ fn test_unit_format() {
|
||||
assert_eq!("123456.8", Unit::MilliSecond.format(value));
|
||||
|
||||
assert_eq!("1234.6", Unit::MicroSecond.format(0.00123456));
|
||||
assert_eq!("2.1", Unit::Minute.format(value));
|
||||
assert_eq!("0.0", Unit::Hour.format(value));
|
||||
}
|
||||
Reference in new issue
Block a user