#15332: Poset.lt computes too much
-------------------------+-------------------------------------------------
       Reporter:         |        Owner:
  ncohen                 |       Status:  positive_review
           Type:         |    Milestone:  sage-6.0
  defect                 |   Resolution:
       Priority:  major  |    Merged in:
      Component:         |    Reviewers:
  combinatorics          |  Work issues:
       Keywords:         |       Commit:
        Authors:         |  2286c10767b69e51430a36baded02bee6e6ab9d5
  Nathann Cohen          |     Stopgaps:
Report Upstream:  N/A    |
         Branch:         |
  u/ncohen/15332         |
   Dependencies:         |
  #15330                 |
-------------------------+-------------------------------------------------
Changes (by darij):

 * status:  needs_review => positive_review


Comment:

 Very nice! Now I do see the almost-50% improvement.

 {{{
 P = Posets.BooleanLattice(4)
 %timeit [P.le(i, j) for i in P for j in P]
 %timeit [P.lt(i, j) for i in P for j in P]
 %timeit [P.ge(i, j) for i in P for j in P]
 %timeit [P.gt(i, j) for i in P for j in P]
 P = RootSystem(['A', 4]).root_poset()
 %timeit [P.le(i, j) for i in P for j in P]
 %timeit [P.lt(i, j) for i in P for j in P]
 %timeit [P.ge(i, j) for i in P for j in P]
 %timeit [P.gt(i, j) for i in P for j in P]
 P = Poset({1: [2, 3]})
 %timeit [P.le(i, j) for i in P for j in P]
 %timeit [P.lt(i, j) for i in P for j in P]
 %timeit [P.ge(i, j) for i in P for j in P]
 %timeit [P.gt(i, j) for i in P for j in P]

 before:

 sage: P = Posets.BooleanLattice(4)
 sage: %timeit [P.le(i, j) for i in P for j in P]
 100 loops, best of 3: 1.65 ms per loop
 sage: %timeit [P.lt(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.58 ms per loop
 sage: %timeit [P.ge(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.6 ms per loop
 sage: %timeit [P.gt(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.56 ms per loop
 sage: P = RootSystem(['A', 4]).root_poset()
 sage: %timeit [P.le(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.39 ms per loop
 sage: %timeit [P.lt(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.39 ms per loop
 sage: %timeit [P.ge(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.39 ms per loop
 sage: %timeit [P.gt(i, j) for i in P for j in P]
 1000 loops, best of 3: 1.38 ms per loop
 sage: P = Poset({1: [2, 3]})
 sage: %timeit [P.le(i, j) for i in P for j in P]
 10000 loops, best of 3: 98.8 us per loop
 sage: %timeit [P.lt(i, j) for i in P for j in P]
 10000 loops, best of 3: 96.7 us per loop
 sage: %timeit [P.ge(i, j) for i in P for j in P]
 10000 loops, best of 3: 96.9 us per loop
 sage: %timeit [P.gt(i, j) for i in P for j in P]
 10000 loops, best of 3: 96.7 us per loop

 after:

 sage: P = Posets.BooleanLattice(4)
 sage: %timeit [P.le(i, j) for i in P for j in P]
 1000 loops, best of 3: 810 us per loop
 sage: %timeit [P.lt(i, j) for i in P for j in P]
 1000 loops, best of 3: 890 us per loop
 sage: %timeit [P.ge(i, j) for i in P for j in P]
 1000 loops, best of 3: 840 us per loop
 sage: %timeit [P.gt(i, j) for i in P for j in P]
 1000 loops, best of 3: 890 us per loop
 sage: P = RootSystem(['A', 4]).root_poset()
 sage: %timeit [P.le(i, j) for i in P for j in P]
 1000 loops, best of 3: 698 us per loop
 sage: %timeit [P.lt(i, j) for i in P for j in P]
 1000 loops, best of 3: 734 us per loop
 sage: %timeit [P.ge(i, j) for i in P for j in P]
 1000 loops, best of 3: 702 us per loop
 sage: %timeit [P.gt(i, j) for i in P for j in P]
 1000 loops, best of 3: 736 us per loop
 sage: P = Poset({1: [2, 3]})
 sage: %timeit [P.le(i, j) for i in P for j in P]
 10000 loops, best of 3: 50.9 us per loop
 sage: %timeit [P.lt(i, j) for i in P for j in P]
 10000 loops, best of 3: 54.9 us per loop
 sage: %timeit [P.ge(i, j) for i in P for j in P]
 10000 loops, best of 3: 51.2 us per loop
 sage: %timeit [P.gt(i, j) for i in P for j in P]
 10000 loops, best of 3: 55.2 us per loop
 }}}

--
Ticket URL: <http://trac.sagemath.org/ticket/15332#comment:8>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to