mirror of
https://github.com/sharkdp/hyperfine.git
synced 2026-11-01 08:50:19 +00:00
Include raw commands in JSON exports when names differ
This commit is contained in:
1 parent
1b3ec922fa
commit
c5d3a81fc5
7 files changed
+79
-2
No files matched your search
@@ -15,9 +15,13 @@ pub struct Parameter {
|
||||
/// Meta data and performance metrics for a single benchmark
|
||||
#[derive(Debug, Default, Clone, Serialize, PartialEq)]
|
||||
pub struct BenchmarkResult {
|
||||
/// The full command line of the program that is being benchmarked
|
||||
/// The display name of the command being benchmarked
|
||||
pub command: String,
|
||||
|
||||
/// The expanded command line, when it differs from the display name
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub command_raw: Option<String>,
|
||||
|
||||
/// Performance metric measurements and exit codes for each run
|
||||
#[serde(flatten)]
|
||||
pub measurements: Measurements,
|
||||
|
||||
@@ -475,8 +475,13 @@ impl<'a> Benchmark<'a> {
|
||||
|
||||
self.run_cleanup_command(self.command.get_parameters().iter().cloned(), output_policy)?;
|
||||
|
||||
let command = self.command.get_name();
|
||||
let command_raw = self.command.get_command_line();
|
||||
let command_raw = (command_raw != command).then_some(command_raw);
|
||||
|
||||
Ok(BenchmarkResult {
|
||||
command: self.command.get_name(),
|
||||
command,
|
||||
command_raw,
|
||||
measurements,
|
||||
parameters: self
|
||||
.command
|
||||
|
||||
@@ -158,6 +158,7 @@ fn create_result(name: &str, mean: f64) -> BenchmarkResult {
|
||||
|
||||
BenchmarkResult {
|
||||
command: name.into(),
|
||||
command_raw: None,
|
||||
measurements: Measurements {
|
||||
measurements: vec![Measurement {
|
||||
time_wall_clock: Time::new::<second>(mean),
|
||||
|
||||
@@ -81,6 +81,7 @@ fn test_csv() {
|
||||
let results = vec![
|
||||
BenchmarkResult {
|
||||
command: String::from("command_a"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(7.0),
|
||||
@@ -125,6 +126,7 @@ fn test_csv() {
|
||||
},
|
||||
BenchmarkResult {
|
||||
command: String::from("command_b"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(17.0),
|
||||
|
||||
@@ -182,6 +182,7 @@ fn test_json_optional_memory() {
|
||||
] {
|
||||
let result = BenchmarkResult {
|
||||
command: "example".into(),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![Measurement {
|
||||
peak_memory_usage: memory,
|
||||
..Measurement::default()
|
||||
@@ -249,6 +250,7 @@ fn test_json_summaries_for_parameterized_results() {
|
||||
.into_iter()
|
||||
.map(|(size, times)| BenchmarkResult {
|
||||
command: "example".into(),
|
||||
command_raw: None,
|
||||
parameters: [(
|
||||
"size".into(),
|
||||
Parameter {
|
||||
|
||||
@@ -28,6 +28,7 @@ fn test_markup_export_auto_ms() {
|
||||
let results = [
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 0.1"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(0.09),
|
||||
@@ -55,6 +56,7 @@ fn test_markup_export_auto_ms() {
|
||||
},
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 2"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(2.0),
|
||||
@@ -127,6 +129,7 @@ fn test_markup_export_auto_s() {
|
||||
let results = [
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 2"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(2.1),
|
||||
@@ -154,6 +157,7 @@ fn test_markup_export_auto_s() {
|
||||
},
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 0.1"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(0.1),
|
||||
@@ -226,6 +230,7 @@ fn test_markup_export_manual_ms() {
|
||||
let timing_results = [
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 2"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(2.1),
|
||||
@@ -253,6 +258,7 @@ fn test_markup_export_manual_ms() {
|
||||
},
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 0.1"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(0.1),
|
||||
@@ -324,6 +330,7 @@ fn test_markup_export_manual_s() {
|
||||
let results = [
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 2"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(2.01),
|
||||
@@ -351,6 +358,7 @@ fn test_markup_export_manual_s() {
|
||||
},
|
||||
BenchmarkResult {
|
||||
command: String::from("sleep 0.1"),
|
||||
command_raw: None,
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
time_wall_clock: Time::new::<second>(0.11),
|
||||
|
||||
Reference in new issue
Block a user