Mercurial > dedupe
diff EditDistance.cpp @ 16:06166d6c083b
Add configuration processing.
Cache DB values
Add a custom RBTree to save space.
Track multiple DB connections properly.
More testing.
Add ValueExistsException.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Tue, 28 Aug 2012 18:58:02 +0200 |
| parents | b5943e4bf676 |
| children | fda70a362ed5 |
line wrap: on
line diff
--- a/EditDistance.cpp Sat Aug 25 01:42:13 2012 +0200 +++ b/EditDistance.cpp Tue Aug 28 18:58:02 2012 +0200 @@ -1,10 +1,13 @@ #include "EditDistance.hpp" +#include "CompileTimeConstants.h" +#include "ConfigurationProcessing.hpp" #include <QtCore/QList> #define CharComparer(A, B) (QChar(A) == QChar(B)) -EditDistance::cacheType EditDistance::cache; +EditDistance::cacheType* EditDistance::cache = 0; +//EditDistance::cacheType EditDistance::cache; QString EditDistance::removeDiacritics(QString in) { @@ -27,9 +30,13 @@ b = removeDiacritics(b); } - OrderedPair<QString> lup(a, b); + OrderedPair<UniqueString> lup(a, b); - boost::optional<int> res = cache.value(lup); + if (cache == 0) { + QString cacheLocation = processSetupVariables(EDITDISTANCE_CACHE_LOCATION); + EditDistance::cache = new cacheType(cacheLocation, "EditLUT"); + } + boost::optional<int> res = cache->value(lup); if (res) return *res; @@ -74,7 +81,7 @@ // Return final value int retVal = d[a.size()][ b.size()]; - cache.insert(lup, retVal); + cache->insert(lup, retVal); return retVal; }
