[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-pim
Subject:    Re: [Kde-pim] Review Request: Optimize file access in maildir
From:       "Kevin Krammer" <kevin.krammer () gmx ! at>
Date:       2012-02-18 15:24:49
Message-ID: 20120218152449.2508.27827 () vidsolbach ! de
[Download RAW message or body]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103947/#review10721
-----------------------------------------------------------



resources/maildir/libmaildir/keycache.h
<http://git.reviewboard.kde.org/r/103947/#comment8725>

    I know this is already inconsistent in the maildir.h file, but I think KDEPIM \
coding style favors  QString &dir
    over
    QString& dir
    



resources/maildir/libmaildir/keycache.h
<http://git.reviewboard.kde.org/r/103947/#comment8728>

    Hmm, I think KDEPIM coding style suggest using members in this form:
    mNewKeys



resources/maildir/libmaildir/keycache.cpp
<http://git.reviewboard.kde.org/r/103947/#comment8726>

    Won't newKeys.size() always be 0 here?
    dir is not in m_newKeys, so m_newKeys[dir] will create and return an empty set, \
no?  
    In case this is true, could this not just be written as
    m_newKeys[dir] = listNew(dir)
    



resources/maildir/libmaildir/keycache.cpp
<http://git.reviewboard.kde.org/r/103947/#comment8727>

    What about
    return m_curKeys.value( dir ).contains( key );



resources/maildir/maildirresource.cpp
<http://git.reviewboard.kde.org/r/103947/#comment8724>

    I know that it not something you have changed, but this should probably be
    setFlag( flag )
    i.e. spaces around function argument


- Kevin Krammer


On Feb. 18, 2012, 11:36 a.m., Andras Mantia wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103947/
> -----------------------------------------------------------
> 
> (Updated Feb. 18, 2012, 11:36 a.m.)
> 
> 
> Review request for KDEPIM and Kevin Krammer.
> 
> 
> Description
> -------
> 
> This patch reduces the number of file stats (QFile::exist) in the maildir library \
> by caching the content of the cur/new directory listing and using QMap lookup to \
> search for file existance. The patch also optimizes the mapping between collections \
> and Maildir objects in the resource. 
> 
> Diffs
> -----
> 
> resources/maildir/libmaildir/CMakeLists.txt b8cfb92 
> resources/maildir/libmaildir/keycache.h PRE-CREATION 
> resources/maildir/libmaildir/keycache.cpp PRE-CREATION 
> resources/maildir/libmaildir/maildir.h b038f02 
> resources/maildir/libmaildir/maildir.cpp d61ac0b 
> resources/maildir/maildirresource.h 233732c 
> resources/maildir/maildirresource.cpp b5aa3e2 
> resources/maildir/retrieveitemsjob.h dfc7095 
> resources/maildir/retrieveitemsjob.cpp 97f22b3 
> 
> Diff: http://git.reviewboard.kde.org/r/103947/diff/
> 
> 
> Testing
> -------
> 
> 1) make test in libmaildir passes
> 2) I run a variant of the patch for quite some time (~2 months) without problem. \
> The only difference was using a QStringList instead of QMap for caching, which make \
> the code even slower. :) 3) You can see the poor man's profiling with the QTime: \
> with a 18K folder subsequent synching (when nothing changes, just click on the \
> folder in KMail that triggers a sync), is around 1100ms. With the patch it is \
> around 670ms. With a 30K folder it was above 2000ms, now it is below 1200ms. This \
> is the time for "ENTRIESPROCESSED", the actual amount of time needed to compare the \
> items in the database with the files on the disk. 
> Here are the full numbers (3 runs for each folder, numbers in ms):
> 
> 18K folder, original code:
> LOCALLISTDONE AT 1856 
> ENTRIESPROCESSED AT 1101 
> 
> LOCALLISTDONE AT 1879 
> ENTRIESPROCESSED AT 1098 
> 
> LOCALLISTDONE AT 1809 
> ENTRIESPROCESSED AT 1097 
> 
> 
> 18K - with patch:
> LOCALLISTDONE AT 1923 
> ENTRIESPROCESSED AT 675 
> 
> LOCALLISTDONE AT 2002 
> ENTRIESPROCESSED AT 674 
> 
> LOCALLISTDONE AT 2045 
> ENTRIESPROCESSED AT 669 
> 
> Net gain is 300-400ms.
> 
> 32K-original:
> LOCALLISTDONE AT 3627 
> ENTRIESPROCESSED AT 2041 
> 
> LOCALLISTDONE AT 3826 
> ENTRIESPROCESSED AT 2009 
> 
> LOCALLISTDONE AT 3698 
> ENTRIESPROCESSED AT 2024 
> 
> 
> 32K -with patch:
> LOCALLISTDONE AT 3447 
> ENTRIESPROCESSED AT 1304 
> 
> LOCALLISTDONE AT 3728 
> ENTRIESPROCESSED AT 1216 
> 
> 
> LOCALLISTDONE AT 3723 
> ENTRIESPROCESSED AT 1207 
> 
> Net gain is 900-1000ms.
> 
> 
> Thanks,
> 
> Andras Mantia
> 
> 

_______________________________________________
KDE PIM mailing list kde-pim@kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic