Hi,
I have a note tree with a bit more than 200k notes.
$ time git notes --ref foo show $sha1 > /dev/null
real 0m0.147s
user 0m0.136s
sys 0m0.008s
That's a lot of time, especially when you have a script that does that
on a fair amount of sha1s.
Now, the interesting thing is this:
$ time git ls-tree -r refs/notes/foo $sha1 ${sha1:0:2}/${sha1:2:38}
${sha1:0:2}/${sha1:2:2}/${sha1:4:36} > /dev/null
real 0m0.006s
user 0m0.008s
sys 0m0.000s
$ time git cat-file blob $objsha1 > /dev/null
real 0m0.002s
user 0m0.000s
sys 0m0.000s
And even better:
$ wc -l /tmp/note
39 /tmp/note
$ time git ls-tree refs/notes/foo $(awk '{print $1, substr($1,1,2) "/"
substr($1,3), substr($1,1,2) "/" substr($1,3,2) "/" substr($1,5)}' /tmp/note) |
awk '{print $3}' | git cat-file --batch > /dev/null
real 0m0.035s
user 0m0.028s
sys 0m0.004s
Reading 39 notes with ls-tree and cat-file --batch takes less time than
using git notes show for only one of them...
(and reading all 39 of them with git notes show takes 5.5s)
Mike
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html