Summary: | File copy operations slow to a stop and bog down computer for large numbers of small files and folders | ||
---|---|---|---|
Product: | [Frameworks and Libraries] kio | Reporter: | Todd <toddrme2178> |
Component: | file | Assignee: | David Faure <faure> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | 4.5 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 4.7.2 |
Description
Todd
2010-11-25 20:38:04 UTC
Git commit 2cd2d1a4cfa1226f959047bd4a0a429382056f19 by Andreas Hartmetz. Committed on 21/09/2011 at 04:03. Pushed by ahartmetz into branch 'KDE/4.7'. Undo manager: Don't prepend() to a QVector which can contain many, many items. Use a QList instead. A QStack is a QVector, which has an O(n) prepend method. Conceptually it is a stack, but not always used like one, so I haven't renamed the typedefs, so the code looks a bit (more) confusing now. Sorry about that. I noticed that copying several 100k files slowed down to just a few files a second and found that most of the time was spent in QVector<KIO::BasicOperation>::prepend(), called from KIO::CommandRecorder::slotCopyingDone(). Another problem is memory usage, which was a few hundred megabytes. This patch does not fix memory usage because I have a lot of memory and it's a difficult problem :) BUG: 257907 BUG: 258497 CCBUG: 280088 M +9 -9 kio/kio/fileundomanager.cpp M +2 -2 kio/kio/fileundomanager_p.h http://commits.kde.org/kdelibs/2cd2d1a4cfa1226f959047bd4a0a429382056f19 |