-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Experiment with Haskell-side, hashable memoized function(s) #100
Comments
See this commit 9271b8e where I removed the old, unsafe IO version. |
There is a branch |
I switched to an |
The experiment was inconclusive. There is a fold over the bit vectors ( We are de-prioritizing this fold optimization for the time being. This should be revisited at a later date. See the |
After completing #141, we can use the benchmarks to quantify if this Haskell memoized TCM is better for usage with string-alignment median lookups. |
We have moderate confidence that the However, the memoized function is not being retained and reapplied between string alignment functions. The consequence is that the memoization work is discarded between each string alignment. There may be a technique to remedy this. The hypothesis is that because we define the pairwise "overlap" function though a
Because this would involve having a function in the "metadata sequence," we could no longer utilize compact regions. This is a potentially large downside. The upside is that, if successful, we would not require a C++ FFI binding, could simplify the This hypothesis would constitute a fairly decent effort to test. |
We should also look into using |
I have added the memoized functions to the metadata and excised the usage of compact region from the code. However, this has broken the We are switching to |
Experiment with ST, TVars, and HashTable libraries to implement a Haskell-side memoization library for Hashable hashable structures. See if this is more efficient than the FFI binding to C++.
We want a type signature that looks like this:
(Eq a, Hashable a) => (a -> b) -> a -> b
The text was updated successfully, but these errors were encountered: