aboutsummaryrefslogtreecommitdiff
path: root/tests/performance_tests
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2018-01-18 12:01:45 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2018-09-11 13:37:31 +0000
commite895c3def1aa6c037c3d9c2daca8dacbd62e74dd (patch)
tree4c5281f1d9bfda0f0b6e8e2e504a49091204ffab /tests/performance_tests
parentmultiexp: bos coster now works for just one point (diff)
downloadmonero-e895c3def1aa6c037c3d9c2daca8dacbd62e74dd.tar.xz
make straus cached mode thread safe, and add tests for it
Diffstat (limited to 'tests/performance_tests')
-rw-r--r--tests/performance_tests/main.cpp7
-rw-r--r--tests/performance_tests/multiexp.h7
2 files changed, 13 insertions, 1 deletions
diff --git a/tests/performance_tests/main.cpp b/tests/performance_tests/main.cpp
index c18a653c8..a00f05ce7 100644
--- a/tests/performance_tests/main.cpp
+++ b/tests/performance_tests/main.cpp
@@ -221,6 +221,13 @@ int main(int argc, char** argv)
TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus, 1024);
TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus, 4096);
+ TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus_cached, 2);
+ TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus_cached, 8);
+ TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus_cached, 16);
+ TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus_cached, 256);
+ TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus_cached, 1024);
+ TEST_PERFORMANCE2(filter, verbose, test_multiexp, multiexp_straus_cached, 4096);
+
std::cout << "Tests finished. Elapsed time: " << timer.elapsed_ms() / 1000 << " sec" << std::endl;
return 0;
diff --git a/tests/performance_tests/multiexp.h b/tests/performance_tests/multiexp.h
index ac5f60fdf..ab5af166b 100644
--- a/tests/performance_tests/multiexp.h
+++ b/tests/performance_tests/multiexp.h
@@ -38,6 +38,7 @@ enum test_multiexp_algorithm
{
multiexp_bos_coster,
multiexp_straus,
+ multiexp_straus_cached,
};
template<test_multiexp_algorithm algorithm, size_t npoints>
@@ -59,6 +60,7 @@ public:
rct::key kn = rct::scalarmultKey(point, data[n].scalar);
res = rct::addKeys(res, kn);
}
+ cache = rct::straus_init_cache(data);
return true;
}
@@ -69,7 +71,9 @@ public:
case multiexp_bos_coster:
return res == bos_coster_heap_conv_robust(data);
case multiexp_straus:
- return res == straus(data, false);
+ return res == straus(data);
+ case multiexp_straus_cached:
+ return res == straus(data, cache);
default:
return false;
}
@@ -77,5 +81,6 @@ public:
private:
std::vector<rct::MultiexpData> data;
+ std::shared_ptr<rct::straus_cached_data> cache;
rct::key res;
};