comment
This commit is contained in:
parent
aaccada8fd
commit
afbfc106af
1 changed files with 42 additions and 0 deletions
|
@ -0,0 +1,42 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 4"""
|
||||||
|
date="2022-07-13T16:15:10Z"
|
||||||
|
content="""
|
||||||
|
I see that repo's master branch has only 86k files in it. On my laptop,
|
||||||
|
`git-annex init --no-autoenable` takes 24 seconds, and is mostly CPU bound.
|
||||||
|
(Autoenabling adds another 6 seconds to that.)
|
||||||
|
|
||||||
|
A local `git clone` of the repo, by the way, takes 7 seconds; so git-annex
|
||||||
|
init is 4x as slow as clone.
|
||||||
|
|
||||||
|
After stubbing out sqlite writes, `git-annex init --no-autoenable` took
|
||||||
|
6 seconds. (2 seconds of that is building up the database write queue.)
|
||||||
|
This is consistent with my earlier benchmarking that sqlite
|
||||||
|
writes are most of the work here. If you would like to try to reproduce
|
||||||
|
that on the slow machine to see how much of the overhead is sqlite writes,
|
||||||
|
here is a quick and dirty patch:
|
||||||
|
|
||||||
|
diff --git a/Database/Queue.hs b/Database/Queue.hs
|
||||||
|
index f4882d2fa..2fbd522f6 100644
|
||||||
|
--- a/Database/Queue.hs
|
||||||
|
+++ b/Database/Queue.hs
|
||||||
|
@@ -55,7 +55,7 @@ flushDbQueue :: DbQueue -> IO ()
|
||||||
|
flushDbQueue (DQ hdl qvar) = do
|
||||||
|
q@(Queue sz _ qa) <- debugLocks $ takeMVar qvar
|
||||||
|
if sz > 0
|
||||||
|
- then tryNonAsync (commitDb hdl qa) >>= \case
|
||||||
|
+ then tryNonAsync (pure ()) >>= \case
|
||||||
|
Right () -> debugLocks $ putMVar qvar =<< emptyQueue
|
||||||
|
Left e -> do
|
||||||
|
debugLocks $ putMVar qvar q
|
||||||
|
@@ -105,7 +105,7 @@ queueDb (DQ hdl qvar) commitchecker a = do
|
||||||
|
let enqueue = debugLocks . putMVar qvar
|
||||||
|
ifM (commitchecker sz' lastcommittime)
|
||||||
|
( do
|
||||||
|
- r <- commitDb' hdl qa'
|
||||||
|
+ r <- pure (Right ()) -- commitDb' hdl qa'
|
||||||
|
case r of
|
||||||
|
Left _ -> enqueue $ Queue sz' lastcommittime qa'
|
||||||
|
Right _ -> enqueue =<< emptyQueue
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue