diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-05-05 22:24:50 +0200 |
---|---|---|
committer | Robert C. Helling <helling@atdotde.de> | 2020-05-06 00:22:31 +0200 |
commit | 123937901fe9c35fcb1be471fb6ad8a9f89f1b1d (patch) | |
tree | 475940d30ac8830063e9053d52b308dfd6cf48b6 /core/qthelper.cpp | |
parent | f37f42876260e804e4e990d608a8dcd21a141ba0 (diff) | |
download | subsurface-123937901fe9c35fcb1be471fb6ad8a9f89f1b1d.tar.gz |
planner: remove Bühlmann factor cache
The Bühlmann factors were cached in a thread-safe hashmap. It seemed
somewhat dubious that entering a critical section and doing a hash-lookup
would be significantly faster than a simple exp() call.
Indeed, in a very cache friendly test (16 entries, tight loop) calling the
factor() function 32 000 000 times from a different translation units we get:
- with cache: 604 ms
- without cache: 266 ms
Therefore, remove the cache. Given that 32 000 000 calls take only 266 ms,
it appears not sensible to try to optimize this function anyway.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/qthelper.cpp')
-rw-r--r-- | core/qthelper.cpp | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/core/qthelper.cpp b/core/qthelper.cpp index bb68afcbc..e543ad1c1 100644 --- a/core/qthelper.cpp +++ b/core/qthelper.cpp @@ -1601,31 +1601,6 @@ char *intdup(int index) return strdup(tmpbuf); } -QHash<int, double> factor_cache; - -QReadWriteLock factorCacheLock; -extern "C" double cache_value(int tissue, int timestep, enum inertgas inertgas) -{ - double value; - int key = (timestep << 5) + (tissue << 1); - if (inertgas == HE) - ++key; - factorCacheLock.lockForRead(); - value = factor_cache.value(key); - factorCacheLock.unlock(); - return value; -} - -extern "C" void cache_insert(int tissue, int timestep, enum inertgas inertgas, double value) -{ - int key = (timestep << 5) + (tissue << 1); - if (inertgas == HE) - ++key; - factorCacheLock.lockForWrite(); - factor_cache.insert(key, value); - factorCacheLock.unlock(); -} - extern "C" void print_qt_versions() { printf("%s\n", qPrintable(QStringLiteral("built with Qt Version %1, runtime from Qt Version %2").arg(QT_VERSION_STR).arg(qVersion()))); |