git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] t/perf: depend on perl JSON only when using --codespeed
@ 2019-04-23  4:34 Jeff King
  2019-04-24  1:20 ` Junio C Hamano
  0 siblings, 1 reply; 2+ messages in thread
From: Jeff King @ 2019-04-23  4:34 UTC (permalink / raw)
  To: git; +Cc: Christian Couder

Commit 05eb1c37ed (perf/aggregate: implement codespeed JSON output,
2018-01-05) added a dependency on the perl JSON module to show output
from aggregate.perl, but we only need it when the user asks for
--codespeed output. While the module is pretty common, it's not part of
the base system, and this dependency can get in the way of producing the
default human-readable output.

Let's bump the "use" down to a "require" in the code path that needs it,
which will be interpreted at run-time instead of compile-time. People
not using "--codespeed" won't even load the module, and anybody using it
should see the same results (including the same perl error if they don't
have it).

Note that this skips the importing step, so we'll have to fully qualify
our function call. We could accomplish the same thing in other ways.
E.g., calling JSON->import() ourselves, or wrapping "use JSON" in an
eval. Since there's only one such call, this seems like the
least-magical way of doing it.

Signed-off-by: Jeff King <peff@peff.net>
---
This bites me occasionally when running perf tests on many-core work
machines where I can't just "apt-get install libjson-perl". So I finally
decided look into it. :)

 t/perf/aggregate.perl | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/t/perf/aggregate.perl b/t/perf/aggregate.perl
index 494907a892..76dd48f890 100755
--- a/t/perf/aggregate.perl
+++ b/t/perf/aggregate.perl
@@ -3,7 +3,6 @@
 use lib '../../perl/build/lib';
 use strict;
 use warnings;
-use JSON;
 use Getopt::Long;
 use Git;
 
@@ -342,7 +341,8 @@ sub print_codespeed_results {
 		}
 	}
 
-	print to_json(\@data, {utf8 => 1, pretty => 1, canonical => 1}), "\n";
+	require JSON;
+	print JSON::to_json(\@data, {utf8 => 1, pretty => 1, canonical => 1}), "\n";
 }
 
 binmode STDOUT, ":utf8" or die "PANIC on binmode: $!";
-- 
2.21.0.1182.g3590c06d32

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] t/perf: depend on perl JSON only when using --codespeed
  2019-04-23  4:34 [PATCH] t/perf: depend on perl JSON only when using --codespeed Jeff King
@ 2019-04-24  1:20 ` Junio C Hamano
  0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2019-04-24  1:20 UTC (permalink / raw)
  To: Jeff King; +Cc: git, Christian Couder

Jeff King <peff@peff.net> writes:

> Commit 05eb1c37ed (perf/aggregate: implement codespeed JSON output,
> 2018-01-05) added a dependency on the perl JSON module to show output
> from aggregate.perl, but we only need it when the user asks for
> --codespeed output. While the module is pretty common, it's not part of
> the base system, and this dependency can get in the way of producing the
> default human-readable output.
>
> Let's bump the "use" down to a "require" in the code path that needs it,
> which will be interpreted at run-time instead of compile-time. People
> not using "--codespeed" won't even load the module, and anybody using it
> should see the same results (including the same perl error if they don't
> have it).

Nice.

> This bites me occasionally when running perf tests on many-core work
> machines where I can't just "apt-get install libjson-perl". So I finally
> decided look into it. :)

Thanks.

>  t/perf/aggregate.perl | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/t/perf/aggregate.perl b/t/perf/aggregate.perl
> index 494907a892..76dd48f890 100755
> --- a/t/perf/aggregate.perl
> +++ b/t/perf/aggregate.perl
> @@ -3,7 +3,6 @@
>  use lib '../../perl/build/lib';
>  use strict;
>  use warnings;
> -use JSON;
>  use Getopt::Long;
>  use Git;
>  
> @@ -342,7 +341,8 @@ sub print_codespeed_results {
>  		}
>  	}
>  
> -	print to_json(\@data, {utf8 => 1, pretty => 1, canonical => 1}), "\n";
> +	require JSON;
> +	print JSON::to_json(\@data, {utf8 => 1, pretty => 1, canonical => 1}), "\n";
>  }
>  
>  binmode STDOUT, ":utf8" or die "PANIC on binmode: $!";

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-04-24  1:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-23  4:34 [PATCH] t/perf: depend on perl JSON only when using --codespeed Jeff King
2019-04-24  1:20 ` Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).