[Rake-devel] Rake DSL Commands are no long in top level
Jim Weirich
jim.weirich at gmail.com
Fri Jun 5 11:59:40 EDT 2009
On Jun 5, 2009, at 10:52 AM, Bennett, Patrick wrote:
> Still - how is that desc - something that does nothing more than
> setting a string, take more time more than reading a file
Because unless you actually request an option that needs task
comments, the comments are not parsed, so nothing is done. Currently,
the desc method doesn't look at the "need task metadata" flag, so it
still runs and stores the comment. But even if I fix that, you still
have a method dispatch (that does nothing).
> (a bunch of two line files isn't the best test, but you did actually
> test something so I can't complain too much ;>)
300 files, each 400 lines long. Each file defining 100 tasks. Longer
more complicated tasks would add to the individual task overhead times
without contributing to the comment parse times. So I figure this is
a worst case scenario for the Ruby comment runtime overhead.
> and running a regexp parse across the caller backtrace? That really
> doesn't make any sense Jim.
The line number info is needed anyways to support the new -W option.
Is there a better way to get the line number info? (If we had macros,
we could capture the __FILE__ and __LINE__ values at the point of task
definition ... never mind ... too much clojure programming lately :)
Actually, another way just occurred to me. We can eval("__FILE__",
block) to get the file name (and __LINE__ for the line number).
However, that only works if the task supplies a block (and not all
tasks do). But I don't know if it will be significantly faster, and
even if we used that, we would still need a call stack search fall
back for tasks without blocks.
> Speaking of the patch - how does it handle it when multiple tasks
> are created on the same line [say in a block iteration]? If there
> happens to be a comment on the line above they'll all get the same
> task description?
Right. The desc technique can be customized with string interpolation
for each task. The ruby comment version can't do that. Good point.
And desc isn't going away, so its still available.
--
-- Jim Weirich
-- jim.weirich at gmail.com
More information about the Rake-devel
mailing list