#7415: improve cycle decomposition
------------------------------------------------+---------------------------
   Reporter:  ylchapuy                          |       Owner:  mhansen         
  
       Type:  enhancement                       |      Status:  needs_work      
  
   Priority:  major                             |   Milestone:  sage-combinat   
  
  Component:  combinatorics                     |    Keywords:  permutation     
  
Work_issues:  Speed regression for small input  |      Author:  Yann 
Laigle-Chapuy
   Reviewer:  Florent Hivert                    |      Merged:                  
  
------------------------------------------------+---------------------------
Changes (by hivert):

  * status:  needs_review => needs_work
  * reviewer:  => Florent Hivert
  * work_issues:  => Speed regression for small input


Comment:

 Replying to [comment:1 ylchapuy]:

 > it can be slightly slower for small permutations with `singletons=False`
 (because of the way we construct L), but I think it's worth it.

 It is indeed in both cases:

 Before
 {{{
 sage: for i in range(8): timeit('[p.to_cycles(True) for p in
 Permutations(i)]')
 ....:
 625 loops, best of 3: 16.5 µs per loop
 625 loops, best of 3: 22.3 µs per loop
 625 loops, best of 3: 41.3 µs per loop
 625 loops, best of 3: 114 µs per loop
 625 loops, best of 3: 450 µs per loop
 125 loops, best of 3: 2.45 ms per loop
 25 loops, best of 3: 15.8 ms per loop
 5 loops, best of 3: 118 ms per loop
 sage: for i in range(8): timeit('[p.to_cycles(False) for p in
 Permutations(i)]')
 ....:
 625 loops, best of 3: 32.4 µs per loop
 625 loops, best of 3: 20.8 µs per loop
 625 loops, best of 3: 39.3 µs per loop
 625 loops, best of 3: 109 µs per loop
 625 loops, best of 3: 441 µs per loop
 125 loops, best of 3: 2.41 ms per loop
 25 loops, best of 3: 15.4 ms per loop
 5 loops, best of 3: 113 ms per loop
 }}}

 After:
 {{{
 sage: for i in range(8): timeit('[p.to_cycles(True) for p in
 Permutations(i)]')
 ....:
 625 loops, best of 3: 23.2 µs per loop
 625 loops, best of 3: 26.3 µs per loop
 625 loops, best of 3: 49.6 µs per loop
 625 loops, best of 3: 136 µs per loop
 625 loops, best of 3: 542 µs per loop
 125 loops, best of 3: 2.9 ms per loop
 25 loops, best of 3: 18.1 ms per loop
 5 loops, best of 3: 137 ms per loop
 sage: for i in range(8): timeit('[p.to_cycles(False) for p in
 Permutations(i)]')
 ....:
 625 loops, best of 3: 22.4 µs per loop
 625 loops, best of 3: 25 µs per loop
 625 loops, best of 3: 49.2 µs per loop
 625 loops, best of 3: 134 µs per loop
 625 loops, best of 3: 542 µs per loop
 125 loops, best of 3: 2.92 ms per loop
 25 loops, best of 3: 18.8 ms per loop
 5 loops, best of 3: 137 ms per loop
 }}}
 Why not having the bost of the two world devising a cut-of point ?

 Once again sorry to give you more work,

 Florent

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7415#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to