summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-04-19 11:32:04 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-04-19 11:32:04 +0800
commitd900d1dc1f2365d5d03d45af4d05ac8791e61e15 (patch)
treeb31ff22ad2396d1dc3a176e37068334c3d7e533a
parent7bc027bf79730a5a7dce523818d46081dc01f4d6 (diff)
downloadurn-d900d1dc1f2365d5d03d45af4d05ac8791e61e15.tar.gz
BM: improve report format.
-rw-r--r--bm/bm_size.pl41
1 files changed, 18 insertions, 23 deletions
diff --git a/bm/bm_size.pl b/bm/bm_size.pl
index 42f7dad..da35f2b 100644
--- a/bm/bm_size.pl
+++ b/bm/bm_size.pl
@@ -18,7 +18,6 @@ my $bm_repo = "bm_repo";
my %results;
my @actions = qw(Status Add Commit);
-# Helper to count inodes (files/folders) in the metadata directory
sub count_inodes {
my $dir = shift;
return 0 unless -d $dir;
@@ -27,7 +26,6 @@ sub count_inodes {
return $count;
}
-# Helper to get folder size in KB
sub get_size {
my $dir = shift;
return 0 unless -d $dir;
@@ -40,7 +38,6 @@ sub run_benchmark {
my ($tool_name) = @_;
print "Benchmarking $tool_name...\n";
- # 1. Seed the directory
system("perl $seed_bin $files $depth > /dev/null 2>&1") == 0 or die "Seeding failed";
chdir($bm_repo) or die "Could not enter $bm_repo: $!";
@@ -56,10 +53,8 @@ sub run_benchmark {
foreach my $action (@actions) {
my $cmd = $cmds{$action};
- # Capture time metrics via STDERR
my $raw = `(/usr/bin/time -l $cmd > /dev/null) 2>&1`;
- # Parse OpenBSD 'time -l' output
my ($real) = $raw =~ /(\d+\.\d+)\s+real/;
my ($rss) = $raw =~ /(\d+)\s+maximum resident set size/;
my ($maj) = $raw =~ /(\d+)\s+page faults caused by physical I\/O/;
@@ -67,10 +62,10 @@ sub run_benchmark {
$results{$action}{$tool_name} = {
real => $real // "0.00",
- rss => $rss ? sprintf("%.1fM", $rss / 1024 / 1024) : "0M",
- fault => sprintf("%d/%d", $maj // 0, $min // 0),
+ rss => $rss ? sprintf("%.2f MB", $rss / 1024 / 1024) : "0.00 MB",
+ faults => sprintf("Maj:%d / Min:%d", $maj // 0, $min // 0),
inodes => count_inodes($meta_dir),
- disk => get_size($meta_dir) . "K",
+ disk => get_size($meta_dir) . " KB",
};
}
@@ -78,35 +73,35 @@ sub run_benchmark {
remove_tree($bm_repo) if -d $bm_repo;
}
-# Run sequence
run_benchmark("URN");
run_benchmark("GIT");
-# --- Final Report Formatting ---
+# --- Vertical Report Formatting ---
my $out_file = "BM_ULTIMATE_${files}_${depth}.txt";
open(my $res, '>', $out_file) or die $!;
-my $fmt = "%-8s | %-32s | %-32s\n";
-my $sep = ("-" x 78);
-
-print $res "BENCHMARK: $files files @ $depth depth\n$sep\n";
-printf $res $fmt, "ACTION", "URN (Time/RSS/Faults/Inodes/Size)", "GIT (Time/RSS/Faults/Inodes/Size)";
-print $res "$sep\n";
+print $res "====================================================\n";
+print $res " BENCHMARK: $files files @ $depth depth\n";
+print $res "====================================================\n\n";
foreach my $action (@actions) {
my $u = $results{$action}{"URN"};
my $g = $results{$action}{"GIT"};
- printf $res "%-8s | %5ss %5s %7s %4s %5s | %5ss %5s %7s %4s %5s\n",
- $action,
- $u->{real}, $u->{rss}, $u->{fault}, $u->{inodes}, $u->{disk},
- $g->{real}, $g->{rss}, $g->{fault}, $g->{inodes}, $g->{disk};
+ print $res "ACTION: $action\n";
+ print $res "----------------------------------------------------\n";
+ printf $res "%-15s | %-20s | %-20s\n", "METRIC", "URN", "GIT";
+ print $res "----------------+----------------------+------------\n";
+ printf $res "%-15s | %20s | %20s\n", "Real Time", $u->{real}."s", $g->{real}."s";
+ printf $res "%-15s | %20s | %20s\n", "Max RSS", $u->{rss}, $g->{rss};
+ printf $res "%-15s | %20s | %20s\n", "Page Faults", $u->{faults}, $g->{faults};
+ printf $res "%-15s | %20s | %20s\n", "Meta Inodes", $u->{inodes}, $g->{inodes};
+ printf $res "%-15s | %20s | %20s\n", "Meta Size", $u->{disk}, $g->{disk};
+ print $res "----------------------------------------------------\n\n";
}
-print $res "$sep\n";
+
close($res);
-# Use PAGER for output
print "\nComparison complete! Results saved to $out_file\n";
my $pager = $ENV{PAGER} || 'less';
system("$pager $out_file");
-