From a6b92cb87bd7fab5a7751b656d607948cc718aae Mon Sep 17 00:00:00 2001 From: Jiang Liu Date: Mon, 17 Apr 2023 15:16:16 +0800 Subject: [PATCH] rafs: optimize Node::name() to reduce image build time According to perf flamegraph, Node::name() costs too much time when generating nydus images from tar files. So optimize it. Signed-off-by: Jiang Liu --- rafs/src/builder/core/node.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rafs/src/builder/core/node.rs b/rafs/src/builder/core/node.rs index b75e93a876c..e89cf32dde0 100644 --- a/rafs/src/builder/core/node.rs +++ b/rafs/src/builder/core/node.rs @@ -711,7 +711,9 @@ impl Node { /// Get filename of the inode. pub fn name(&self) -> &OsStr { - if self.path() == &self.info.source { + if let Some(name) = self.target_vec().last() { + name + } else if self.path() == &self.info.source { OsStr::from_bytes(ROOT_PATH_NAME) } else { // Safe to unwrap because `path` is returned from `path()` which is canonicalized