From e18ecc3fa51f77d9cbaf6275f1cf9426f53c9aab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Tue, 10 Jan 2023 11:49:39 +0100
Subject: [PATCH] ModFile::remove_directory_with_matlab_lock(): minor
 performance improvement

Use std::filesystem::file_status and cached directory entries information to
avoid extra filesystem operations.
---
 src/ModFile.cc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/ModFile.cc b/src/ModFile.cc
index 925694d2..4e7c175f 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -761,12 +761,13 @@ ModFile::computingPass(bool no_tmp_terms, OutputType output, int params_derivs_o
 void
 ModFile::remove_directory_with_matlab_lock(const filesystem::path &dir)
 {
-  if (!exists(dir))
+  auto dirStatus {status(dir)};
+  if (!exists(dirStatus))
     return;
 
-  if (is_directory(dir))
+  if (is_directory(dirStatus))
     for (const auto &e : filesystem::directory_iterator{dir})
-      if (is_directory(e))
+      if (e.is_directory())
         remove_directory_with_matlab_lock(e);
 
   auto tmp {unique_path()};
-- 
GitLab