Comments (5)
Is this related to your changes to begin
/end
?
from cmcstl2.
Yes - it wouldn't compile at all before the memoization changes (#11). It would fill the 7G of virtual memory in my VirtualBox and the Linux kernel OOM killer would kill the compiler. It's probably a similar issue with multiple redundant constraints on the many find_end
overloads that could be worked around with some clever memoization.
from cmcstl2.
1c46215 is a 40% speedup - still slower than I'd like.
from cmcstl2.
cf29332 is memoization taken to the extreme - pushed as far as possible without obscuring subsumption relationships between concepts. The concepts are effectively decomposed into conjunctions of memoizable traits. alg.find_end compiles in 15 seconds.
It is, however, not strictly conforming. Since the expressions are all hidden from the compiler, it won't know that e.g. an overload that requires a == b
is strictly less specialized than an overload that requires EqualityComparable<decltype(a), decltype(b)>()
. I hate to commit something so "loosely" conformant, but we're rapidly outscaling the compiler's capabilites.
from cmcstl2.
Merged the memoization branch to master in 8650909. For the time being, we need a working reference implementation more than we need strict conformance.
from cmcstl2.
Related Issues (20)
- view::join issue HOT 5
- Can __stl2::ref be a niebloid? HOT 1
- Infinite iota -> filter -> transform HOT 2
- value_type<T> does not return value type of a pointer HOT 2
- view::generate isn't pipeable HOT 3
- Help with adapting split_view to take a length rather than a pattern. HOT 3
- view::join functionality question
- Constraint recursion in any_iterator HOT 2
- max_element multiple occurrences returns last
- GCC 8.3 and 9.1: Internal compiler error in type_dependent_expression_p, at cp/pt.c:25930 HOT 3
- transform.hpp iter_move violates access control
- Concepts TS vs C++20 concepts HOT 1
- Drop range-and-a-half algorithm overloads HOT 1
- To __ugly or not to _Ugly HOT 1
- no match for call to size inside ref_view
- Add Windows Dockerfile for CI
- N1452 problems HOT 1
- Use iterator_concept rather than iterator_category
- temporary_vector.hpp: C++20 removed std::get_temporary_buffer
- views::{elements, values, keys} are missing
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cmcstl2.