#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.