Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit 35acd6f1 authored by Scott Wheeler's avatar Scott Wheeler

Very significant startup time optimization for large collections -- hey, I

knew there was a reason I wrote that StringHash class.  I think I was just
too lazy to write a remove() method for it so I used my SortedStringList
instead.  Anyway, switching over to the StringHash makes startup time for
a collection of 12,500 items about 8x faster.

svn path=/trunk/kdemultimedia/juk/; revision=242601
parent 344c07b7
......@@ -25,7 +25,7 @@
#include <qvaluevector.h>
#include <qptrstack.h>
#include "sortedstringlist.h"
#include "stringhash.h"
#include "playlistsearch.h"
#include "tagguesser.h"
......@@ -429,7 +429,7 @@ private slots:
void slotCreateGroup() { emit signalCreatePlaylist(selectedItems()); }
private:
SortedStringList m_members;
StringHash m_members;
int m_currentColumn;
int m_processed;
bool m_allowDuplicates;
......
......@@ -74,6 +74,26 @@ bool StringHash::contains(const QString &value) const
return bool(i);
}
bool StringHash::remove(const QString &value)
{
int h = hash(value);
Node *previous = 0;
Node *i = m_table[h];
while(i && i->key != value) {
previous = i;
i = i->next;
}
if(!i)
return false;
previous->next = i->next;
delete i;
return true;
}
/*
QStringList StringHash::values() const
{
......
......@@ -30,6 +30,7 @@ public:
bool insert(const QString &value);
bool contains(const QString &value) const;
bool remove(const QString &value);
/**
* Returns a sorted list of the values.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment