On Jul 2, 2013, at 3:39 PM, Richard Smith <[email protected]> wrote:
> On Tue, Jul 2, 2013 at 7:56 AM, Howard Hinnant <[email protected]> wrote:
>> On Jul 1, 2013, at 10:13 PM, Richard Smith <[email protected]> wrote:
>> 
>>> On Mon, Jul 1, 2013 at 4:57 PM, Howard Hinnant <[email protected]> wrote:
>>>> On Jul 1, 2013, at 6:17 PM, Howard Hinnant <[email protected]> wrote:
>>>> 
>>>>> Inspired by your approach, I started from scratch and came up with the 
>>>>> enclosed.  The compiler will run out of memory before it runs into the 
>>>>> recursive template instantiation limit, and this works with far higher 
>>>>> numbers.  It passes all the current intseq tests.
>>>> 
>>>> [ snip ]
>>> 
>>> My algorithm is fixed up and attached. I upped the divisor to 8; that
>>> was the sweet spot in my testing. I also switched to performing the
>>> pack building in size_t and converting to the sequence's type at the
>>> end (and thus using explicit specializations rather than partial
>>> specializations); that made the size_t case about 35% faster, but the
>>> non-size_t cases about 40% slower (converting from
>>> integer_sequence<size_t, ...> to integer_sequence<T, ...> is now,
>>> remarkably, slower than building the integer_sequence<size_t, ...>).
>>> It's probably possible to tweak this to get the same performance for
>>> all T, but I've not yet found a trick for that.
>>> <mis.cc>
>> 
>> I copy/pasted this in and ran the unit tests and one of the tests caused 
>> clang to consume over a Gb of memory before I aborted the test.  I guessed 
>> that the test responsible for this was inputing a negative N.  So I renamed 
>> your __make_integer_sequence to __make_integer_sequence_unchecked, and put 
>> checking on top of it and tested again.  This is much faster than what I 
>> posted for very long sequences.  Looks like 10X faster.
>> 
>> I went through and macro-protected your suggestion and am posting it back 
>> here for review.
> 
> LGTM

Committed as revision 185569 (with an additional visibility annotation)


-- Marshall

Marshall Clow     Idio Software   <mailto:[email protected]>

A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly 
moderated down to (-1, Flamebait).
        -- Yu Suzuki


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to