From d1d3952c46d07c21860235fc2bef8077c2af3e01 Mon Sep 17 00:00:00 2001 From: Watson Date: Thu, 10 Apr 2014 16:47:05 +0900 Subject: [PATCH] memorize the calculated file dependencies. Thanks to Ignacio Piantanida for the patch. http://hipbyte.myjetbrains.com/youtrack/issue/RM-466 * before % time rake ... snip ... rake 38.41s user 2.77s system 101% cpu 40.515 total * after % time rake ... snip ... rake 18.01s user 1.64s system 89% cpu 21.877 total --- lib/motion/project/config.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/motion/project/config.rb b/lib/motion/project/config.rb index 366310b5..e0794e23 100644 --- a/lib/motion/project/config.rb +++ b/lib/motion/project/config.rb @@ -236,14 +236,17 @@ module Motion; module Project end def file_dependencies(file) - deps = @dependencies[file] - if deps - deps = deps.map { |x| file_dependencies(x) } - else - deps = [] + @known_dependencies ||= {} + @known_dependencies[file] ||= begin + deps = @dependencies[file] + if deps + deps = deps.map { |x| file_dependencies(x) } + else + deps = [] + end + deps << file + deps end - deps << file - deps end def ordered_build_files