mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-08-15 01:03:23 +00:00
Add Pippenger cache and limit Straus cache size
This commit is contained in:
parent
51eb3bdcd6
commit
0b05a0fa74
5 changed files with 217 additions and 39 deletions
|
@ -40,6 +40,7 @@ enum test_multiexp_algorithm
|
|||
multiexp_straus,
|
||||
multiexp_straus_cached,
|
||||
multiexp_pippenger,
|
||||
multiexp_pippenger_cached,
|
||||
};
|
||||
|
||||
template<test_multiexp_algorithm algorithm, size_t npoints, size_t c=0>
|
||||
|
@ -61,7 +62,8 @@ public:
|
|||
rct::key kn = rct::scalarmultKey(point, data[n].scalar);
|
||||
res = rct::addKeys(res, kn);
|
||||
}
|
||||
cache = rct::straus_init_cache(data);
|
||||
straus_cache = rct::straus_init_cache(data);
|
||||
pippenger_cache = rct::pippenger_init_cache(data);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -74,9 +76,11 @@ public:
|
|||
case multiexp_straus:
|
||||
return res == straus(data);
|
||||
case multiexp_straus_cached:
|
||||
return res == straus(data, cache);
|
||||
return res == straus(data, straus_cache);
|
||||
case multiexp_pippenger:
|
||||
return res == pippenger(data, c);
|
||||
return res == pippenger(data, NULL, c);
|
||||
case multiexp_pippenger_cached:
|
||||
return res == pippenger(data, pippenger_cache, c);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -84,6 +88,7 @@ public:
|
|||
|
||||
private:
|
||||
std::vector<rct::MultiexpData> data;
|
||||
std::shared_ptr<rct::straus_cached_data> cache;
|
||||
std::shared_ptr<rct::straus_cached_data> straus_cache;
|
||||
std::shared_ptr<rct::pippenger_cached_data> pippenger_cache;
|
||||
rct::key res;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue