diff --git a/src/bin/flamegraph.rs b/src/bin/flamegraph.rs
index fe33feb4..fe343b9f 100644
--- a/src/bin/flamegraph.rs
+++ b/src/bin/flamegraph.rs
@@ -82,6 +82,10 @@ struct Opt {
)]
colors: Palette,
+ /// Color frames based on their width, highlighting expensive codepaths
+ #[structopt(long = "colordiffusion", conflicts_with = "colors")]
+ color_diffusion: bool,
+
/// Count type label
#[structopt(
long = "countname",
@@ -213,6 +217,7 @@ impl<'a> Opt {
options.pretty_xml = self.pretty_xml;
options.no_sort = self.no_sort;
options.no_javascript = self.no_javascript;
+ options.color_diffusion = self.color_diffusion;
options.reverse_stack_order = self.reverse;
// set style options
@@ -395,6 +400,7 @@ mod tests {
no_sort: false,
reverse_stack_order: true,
no_javascript: true,
+ color_diffusion: false,
};
assert_eq!(options, expected_options);
diff --git a/src/flamegraph/color/mod.rs b/src/flamegraph/color/mod.rs
index 9c16f6f2..9e2e9ed1 100644
--- a/src/flamegraph/color/mod.rs
+++ b/src/flamegraph/color/mod.rs
@@ -349,20 +349,20 @@ pub(super) fn color(
pub(super) fn color_scale(value: isize, max: usize) -> Color {
match value.cmp(&0) {
Ordering::Equal => Color {
- r: 255,
- g: 255,
- b: 255,
+ r: 250,
+ g: 250,
+ b: 250,
},
Ordering::Greater => {
// A positive value indicates _more_ samples,
// and hence more time spent, so we give it a red hue.
- let c = (210 * (max as isize - value) / max as isize) as u8;
+ let c = 100 + (150 * (max as isize - value) / max as isize) as u8;
Color { r: 255, g: c, b: c }
}
Ordering::Less => {
// A negative value indicates _fewer_ samples,
- // or a speed-up, so we give it a green hue.
- let c = (210 * (max as isize + value) / max as isize) as u8;
+ // or a speed-up, so we give it a blue hue.
+ let c = 100 + (150 * (max as isize + value) / max as isize) as u8;
Color { r: c, g: c, b: 255 }
}
}
diff --git a/src/flamegraph/mod.rs b/src/flamegraph/mod.rs
index 3fdc6b78..23d50711 100644
--- a/src/flamegraph/mod.rs
+++ b/src/flamegraph/mod.rs
@@ -232,6 +232,14 @@ pub struct Options<'a> {
/// This is only meant to be used in tests.
#[doc(hidden)]
pub no_javascript: bool,
+
+ /// Diffusion-based color: the wider the frame, the more red it is. This
+ /// helps visually draw the eye towards frames that are wider, and therefore
+ /// more likely to need to be optimized. This is redundant information,
+ /// insofar as it's the same as the width of frames, but it still provides a
+ /// useful visual cue of what to focus on, especially if you are showing
+ /// flamegraphs to someone for the first time.
+ pub color_diffusion: bool,
}
impl<'a> Options<'a> {
@@ -278,6 +286,7 @@ impl<'a> Default for Options<'a> {
no_sort: Default::default(),
reverse_stack_order: Default::default(),
no_javascript: Default::default(),
+ color_diffusion: Default::default(),
#[cfg(feature = "nameattr")]
func_frameattrs: Default::default(),
@@ -575,6 +584,13 @@ where
color::VDGREY
} else if frame.location.function == "-" {
color::DGREY
+ } else if opt.color_diffusion {
+ // We want to visually highlight high priority regions for
+ // optimization: wider frames are redder. Typically when optimizing,
+ // a frame that is 50% of width is high priority, so it seems wrong
+ // to give it half the saturation of 100%. So we use sqrt to make
+ // the red dropoff less linear.
+ color::color_scale((((x2_pct - x1_pct) / 100.0).sqrt() * 2000.0) as isize, 2000)
} else if let Some(mut delta) = frame.delta {
if opt.negate_differentials {
delta = -delta;
diff --git a/tests/data/flamegraph/differential/diff-negated.svg b/tests/data/flamegraph/differential/diff-negated.svg
index 14751211..5e92d2bd 100644
--- a/tests/data/flamegraph/differential/diff-negated.svg
+++ b/tests/data/flamegraph/differential/diff-negated.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
diff --git a/tests/data/flamegraph/differential/diff.svg b/tests/data/flamegraph/differential/diff.svg
index a9782ece..a490937f 100644
--- a/tests/data/flamegraph/differential/diff.svg
+++ b/tests/data/flamegraph/differential/diff.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
diff --git a/tests/data/flamegraph/options/colordiffusion.svg b/tests/data/flamegraph/options/colordiffusion.svg
new file mode 100644
index 00000000..420f32a8
--- /dev/null
+++ b/tests/data/flamegraph/options/colordiffusion.svg
@@ -0,0 +1,1844 @@
+
\ No newline at end of file
diff --git a/tests/data/flamegraph/options/count_name_simple.svg b/tests/data/flamegraph/options/count_name_simple.svg
index 1e05a7b7..0eda38a6 100644
--- a/tests/data/flamegraph/options/count_name_simple.svg
+++ b/tests/data/flamegraph/options/count_name_simple.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 test-samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 test-samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 test-samples, 10.92%; 0.00%)
-
+
main
cksum (56 test-samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 test-samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 test-samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 test-samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 test-samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 test-samples, 0.58%; 0.00%)
-
+
sys_read (3 test-samples, 0.58%; 0.00%)
-
+
vfs_read (3 test-samples, 0.58%; 0.00%)
-
+
__vfs_read (3 test-samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 test-samples, 0.58%; +0.39%)
-
+
cksum (96 test-samples, 18.71%; 0.00%)
-
+
cksum
main (35 test-samples, 6.82%; 0.00%)
-
+
main
cksum (35 test-samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 test-samples, 0.39%; 0.00%)
-
+
all (513 test-samples, 100%)
-
+
noploop (417 test-samples, 81.29%; 0.00%)
-
+
noploop
main (415 test-samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/count_name_with_symbols.svg b/tests/data/flamegraph/options/count_name_with_symbols.svg
index da32e39c..6d0c50fc 100644
--- a/tests/data/flamegraph/options/count_name_with_symbols.svg
+++ b/tests/data/flamegraph/options/count_name_with_symbols.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 test-samples <& ' ", 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 test-samples <& ' ", 10.92%; 0.00%)
-
+
__libc_start_main
main (56 test-samples <& ' ", 10.92%; 0.00%)
-
+
main
cksum (56 test-samples <& ' ", 10.92%; +4.87%)
-
+
cksum
cksum (5 test-samples <& ' ", 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
_IO_file_read (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
sys_read (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
vfs_read (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
__vfs_read (3 test-samples <& ' ", 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 test-samples <& ' ", 0.58%; +0.39%)
-
+
cksum (96 test-samples <& ' ", 18.71%; 0.00%)
-
+
cksum
main (35 test-samples <& ' ", 6.82%; 0.00%)
-
+
main
cksum (35 test-samples <& ' ", 6.82%; +3.12%)
-
+
cksum
[unknown] (2 test-samples <& ' ", 0.39%; 0.00%)
-
+
all (513 test-samples <& ' ", 100%)
-
+
noploop (417 test-samples <& ' ", 81.29%; 0.00%)
-
+
noploop
main (415 test-samples <& ' ", 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/default.svg b/tests/data/flamegraph/options/default.svg
index a9782ece..a490937f 100644
--- a/tests/data/flamegraph/options/default.svg
+++ b/tests/data/flamegraph/options/default.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/font_type_simple.svg b/tests/data/flamegraph/options/font_type_simple.svg
index 2ff84f02..70198e31 100644
--- a/tests/data/flamegraph/options/font_type_simple.svg
+++ b/tests/data/flamegraph/options/font_type_simple.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/font_type_with_quote.svg b/tests/data/flamegraph/options/font_type_with_quote.svg
index a4e2dd38..dee0940e 100644
--- a/tests/data/flamegraph/options/font_type_with_quote.svg
+++ b/tests/data/flamegraph/options/font_type_with_quote.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/name_type_simple.svg b/tests/data/flamegraph/options/name_type_simple.svg
index acb87adc..813e74c8 100644
--- a/tests/data/flamegraph/options/name_type_simple.svg
+++ b/tests/data/flamegraph/options/name_type_simple.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/name_type_with_backslash.svg b/tests/data/flamegraph/options/name_type_with_backslash.svg
index 7edbcf8f..26df6024 100644
--- a/tests/data/flamegraph/options/name_type_with_backslash.svg
+++ b/tests/data/flamegraph/options/name_type_with_backslash.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/name_type_with_quote.svg b/tests/data/flamegraph/options/name_type_with_quote.svg
index 1ed23723..85c3d7bb 100644
--- a/tests/data/flamegraph/options/name_type_with_quote.svg
+++ b/tests/data/flamegraph/options/name_type_with_quote.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/notes_simple.svg b/tests/data/flamegraph/options/notes_simple.svg
index b85bcbcc..7ca142fb 100644
--- a/tests/data/flamegraph/options/notes_simple.svg
+++ b/tests/data/flamegraph/options/notes_simple.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/notes_with_symbols.svg b/tests/data/flamegraph/options/notes_with_symbols.svg
index f2138490..30f319d2 100644
--- a/tests/data/flamegraph/options/notes_with_symbols.svg
+++ b/tests/data/flamegraph/options/notes_with_symbols.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/search_color.svg b/tests/data/flamegraph/options/search_color.svg
index 9e560476..72cb3b7a 100644
--- a/tests/data/flamegraph/options/search_color.svg
+++ b/tests/data/flamegraph/options/search_color.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/subtitle_simple.svg b/tests/data/flamegraph/options/subtitle_simple.svg
index 6b029c88..9e767aea 100644
--- a/tests/data/flamegraph/options/subtitle_simple.svg
+++ b/tests/data/flamegraph/options/subtitle_simple.svg
@@ -38,102 +38,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/subtitle_with_symbols.svg b/tests/data/flamegraph/options/subtitle_with_symbols.svg
index 3260c359..bd063187 100644
--- a/tests/data/flamegraph/options/subtitle_with_symbols.svg
+++ b/tests/data/flamegraph/options/subtitle_with_symbols.svg
@@ -38,102 +38,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/title_simple.svg b/tests/data/flamegraph/options/title_simple.svg
index a5300c7c..06e31c7c 100644
--- a/tests/data/flamegraph/options/title_simple.svg
+++ b/tests/data/flamegraph/options/title_simple.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/data/flamegraph/options/title_with_symbols.svg b/tests/data/flamegraph/options/title_with_symbols.svg
index 3532e909..2778bafe 100644
--- a/tests/data/flamegraph/options/title_with_symbols.svg
+++ b/tests/data/flamegraph/options/title_with_symbols.svg
@@ -37,102 +37,102 @@ var truncate_text_right = false;]]>
_start (56 samples, 10.92%; 0.00%)
-
+
_start
__libc_start_main (56 samples, 10.92%; 0.00%)
-
+
__libc_start_main
main (56 samples, 10.92%; 0.00%)
-
+
main
cksum (56 samples, 10.92%; +4.87%)
-
+
cksum
cksum (5 samples, 0.97%; -0.78%)
-
+
__GI___fread_unlocked (3 samples, 0.58%; 0.00%)
-
+
_IO_file_xsgetn (3 samples, 0.58%; 0.00%)
-
+
_IO_file_read (3 samples, 0.58%; 0.00%)
-
+
entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%)
-
+
sys_read (3 samples, 0.58%; 0.00%)
-
+
vfs_read (3 samples, 0.58%; 0.00%)
-
+
__vfs_read (3 samples, 0.58%; 0.00%)
-
+
ext4_file_read_iter (3 samples, 0.58%; +0.39%)
-
+
cksum (96 samples, 18.71%; 0.00%)
-
+
cksum
main (35 samples, 6.82%; 0.00%)
-
+
main
cksum (35 samples, 6.82%; +3.12%)
-
+
cksum
[unknown] (2 samples, 0.39%; 0.00%)
-
+
all (513 samples, 100%)
-
+
noploop (417 samples, 81.29%; 0.00%)
-
+
noploop
main (415 samples, 80.90%; +27.49%)
-
+
main
diff --git a/tests/flamegraph.rs b/tests/flamegraph.rs
index 5693a40e..e350ff23 100644
--- a/tests/flamegraph.rs
+++ b/tests/flamegraph.rs
@@ -171,6 +171,17 @@ fn flamegraph_differential_negated() {
test_flamegraph(input_file, expected_result_file, options).unwrap();
}
+#[test]
+fn flamegraph_collor_diffusion() {
+ let input_file = "./flamegraph/test/results/perf-vertx-stacks-01-collapsed-all.txt";
+ let expected_result_file = "./tests/data/flamegraph/options/colordiffusion.svg";
+ let options = Options {
+ color_diffusion: true,
+ ..Default::default()
+ };
+ test_flamegraph(input_file, expected_result_file, options).unwrap();
+}
+
#[test]
fn flamegraph_factor() {
let input_file = "./flamegraph/test/results/perf-vertx-stacks-01-collapsed-all.txt";