Thank you for the replies.

As suggested by Aaron , I figured out ways to fix the performance of
https://github.com/sympy/sympy/issues/16249.
One of the easy way is to disable _find_localzeros
The function is creating a set of non-minimal(non-maximal) numbers and to
identify these it is making comparison between every two possible
combination of numbers.
But these non-minimal values can be computed by sorting the values in
ascending or descending order.
This sorting can be done by using algorithms like merge-sort with
complexity (nlogn) which is much better than currently used n**2.
So second option is to use better algorithms.

Which would be better or which one should i use to fix this issue?
 Please suggest.

I am also trying to find regressions on which i could work in
https://github.com/sympy/sympy_benchmarks.

On Thu, Mar 28, 2019 at 9:38 PM Jason Moore <moorepa...@gmail.com> wrote:

> We have a benchmark repository that is run periodically:
> https://github.com/sympy/sympy_benchmarks
>
> I recommend starting there. You can find a number of regressions that can
> be investigated.
>
> Jason
> moorepants.info
> +01 530-601-9791
>
>
> On Wed, Mar 27, 2019 at 5:17 PM Aaron Meurer <asmeu...@gmail.com> wrote:
>
>> I agree with Oscar. I would also add that it's usually not trivial to
>> determine where the bottlenecks are in SymPy. So I would write more
>> about how you intend to profile the code.
>>
>> Perhaps it would be useful to take an existing thing that is slow in
>> SymPy (you can use the performance issue label as a guide, or find
>> something yourself,
>>
>> https://github.com/sympy/sympy/issues?q=is%3Aopen+is%3Aissue+label%3APerformance
>> ),
>> and try to fix the performance, documenting how you went about finding
>> the bottleneck and fixing it. This can be used as a case study in your
>> application.
>>
>> Also I would note that currently the benchmarking infrastructure for
>> SymPy is quite bad (basically nonexistent). See
>>
>> https://github.com/sympy/sympy/wiki/GSoC-2019-Ideas#benchmarks-and-performance
>> .
>> It's fine if you do not want to work on that specifically, but you
>> should note that you will be running the benchmarks on your own
>> computer to find performance regressions. Not all performance issues
>> are regressions either (some things have always been slow), so you
>> should consider absolute numbers as well as relative numbers.
>>
>> Aaron Meurer
>>
>> On Wed, Mar 27, 2019 at 5:11 PM Oscar Benjamin
>> <oscar.j.benja...@gmail.com> wrote:
>> >
>> > This looks like good work to do. I don't know how these applications
>> > are evaluated but my thought if I was reviewing this would be that it
>> > seems quite vague. This would probably be a more enticing proposal if
>> > it had some specific suggestions of changes that would speed things
>> > up.
>> >
>> > I can tell you now what is slow in the ODE module: currently even for
>> > the simplest ODEs all matching code is run for all the possible
>> > methods even after a suitable method has been found. It would be much
>> > better to identify the most immediately usable solver and then use
>> > that without matching all the others. This needs a refactor of the
>> > module though and a redesign of the basic approach used by dsolve. I
>> > want that to happen as an ultimate goal but I would like to see better
>> > test coverage first.
>> >
>> > On Wed, 27 Mar 2019 at 09:56, Shiksha Rawat <shiksharawa...@gmail.com>
>> wrote:
>> > >
>> > >
>> https://github.com/sympy/sympy/wiki/GSoC-2019-Application-SHIKSHA-RAWAT-:-Benchmarks-and-performance
>> > >
>> > > I have designed a proposal for Benchmarks and Perfromance idea,
>> though it is not complete yet.
>> > >
>> > > Can Jason Moore, Aaron and Oscar please review that and suggest
>> changes?
>> > >
>> > >
>> > > On Tue, Mar 19, 2019 at 11:53 PM Shiksha Rawat <
>> shiksharawa...@gmail.com> wrote:
>> > >>
>> > >> I did further digging on the idea mentioned by Jason Moore.
>> > >>
>> > >> Figuring out the main bottlenecks for sympy : The best way to figure
>> out these bottlenecks would be to designing a typical problem for each
>> module for example mass spring damper for physics and computing time taken
>> by sympy to give the output.If it is greater then expected than or a
>> predefined threshold than analyzing the codebase of that module for
>> possible changes to decrease computation time. And the results of
>> predefined benchmarks could also be used.
>> > >>
>> > >> Creating benchmarks :
>> https://media.readthedocs.org/pdf/asv/v0.1.1/asv.pdf
>> > >> I think this documentation could come in handy for creating the
>> benchmarks. The requirement of a particular benchmark could be made on the
>> basis of the bottlenecks which we will figure out.
>> > >>
>> > >> Improving performance:  I think the best way to improve performance
>> would be cleaning up the codebase first and then making changes in the
>> algorithms used according to the requirements.
>> > >>
>> > >> Future Scope: Figuring out a method by which each PR also has to
>> give information about the time the modules related to that PR will take to
>> give output of problems associated with that module. (those mentioned in
>> figuring out the bottlenecks point).
>> > >>
>> > >> I might be wrong about the ideas mentioned above. So I want
>> suggestions from the mentors.
>> > >>
>> > >> Thanks.
>> > >>
>> > >> On Fri, Mar 15, 2019 at 9:48 PM Shiksha Rawat <
>> shiksharawa...@gmail.com> wrote:
>> > >>>
>> > >>> I am really interested in taking up that idea. Can you suggest
>> where or how should I start from because up till now I was just focusing on
>> the physics module and benchmarks related to it?
>> > >>> I am still trying to find how could we optimize matrix operations.
>> > >>>
>> > >>>
>> > >>> On Fri, Mar 15, 2019 at 8:46 PM Jason Moore <moorepa...@gmail.com>
>> wrote:
>> > >>>>
>> > >>>> The mechanics speedup idea is really just a narrow version of the
>> profiling and benchmarking idea (focuses on just a couple of packages).
>> Maybe a proposal that focuses on figuring out the main bottlenecks for
>> sympy, creating benchmarks for them, and then improving performance is a
>> good proposal idea that will ultimately help all the packages. I'm happy to
>> support and mentor on that idea if someone wants to submit.
>> > >>>>
>> > >>>> Jason
>> > >>>> moorepants.info
>> > >>>> +01 530-601-9791
>> > >>>>
>> > >>>>
>> > >>>> On Thu, Mar 14, 2019 at 2:19 PM Aaron Meurer <asmeu...@gmail.com>
>> wrote:
>> > >>>>>
>> > >>>>> I agree. The biggest challenge with symbolic matrices is
>> expression
>> > >>>>> blow up. In some cases it is unavoidable, for instance, symbolic
>> > >>>>> eigenvalues/eigenvectors use the symbolic solutions to
>> polynomials,
>> > >>>>> which are complicated in the general case for n > 2.
>> > >>>>>
>> > >>>>> One thing I meant by "overhead" is that if the type of a matrix's
>> > >>>>> entries is known to all be rational numbers, for instance, we can
>> > >>>>> operate directly on those numbers, ideally using fast number types
>> > >>>>> like gmpy.mpq. If they are all rational functions, we can use
>> > >>>>> polynomial algorithms that operate on rational functions. These
>> always
>> > >>>>> keep rational functions in canonical form, and the zero
>> equivalence
>> > >>>>> testing becomes literally "expr == 0" (no simplification
>> required).
>> > >>>>> These can be more efficient than general symbolic manipulation.
>> > >>>>>
>> > >>>>> This is how the polys module is structured. See
>> > >>>>> https://docs.sympy.org/latest/modules/polys/internals.html. It
>> would
>> > >>>>> be nice to have a similar structure in the matrices, where a
>> matrix
>> > >>>>> can have a ground domain (or type) associated with its underlying
>> > >>>>> data.
>> > >>>>>
>> > >>>>> Aaron Meurer
>> > >>>>>
>> > >>>>> On Thu, Mar 14, 2019 at 2:52 PM Oscar Benjamin
>> > >>>>> <oscar.j.benja...@gmail.com> wrote:
>> > >>>>> >
>> > >>>>> > (Replying on-list)
>> > >>>>> >
>> > >>>>> > On Thu, 14 Mar 2019 at 20:37, Alan Bromborsky <
>> abrombo...@gmail.com> wrote:
>> > >>>>> > >
>> > >>>>> > > Since most pc these days have multiple cores and threads what
>> not use
>> > >>>>> > > parallel algorithyms.  For honesty I must state I have a
>> vested interest
>> > >>>>> > > since I have a pc with a threadripper cpu with 16 cores and
>> 32 threads.
>> > >>>>> >
>> > >>>>> > Parallel algorithms can offer improvement. Your 16 cores might
>> amount
>> > >>>>> > to a 10x speed up if used well for this kind of thing. The
>> > >>>>> > double-threading probably can't be exploited in CPython.
>> > >>>>> >
>> > >>>>> > However I think that many of the things that SymPy is slow for
>> have
>> > >>>>> > *really* bad asymptotic performance: think O(N!) rather than
>> O(N^2).
>> > >>>>> > Many orders of magnitude improvements can be made by spotting
>> these
>> > >>>>> > where more efficient methods are possible. It's not hard in a
>> CAS to
>> > >>>>> > accidentally generate enormous expressions and end up
>> simplifying them
>> > >>>>> > down again. This leads to many situations where it would be
>> vastly
>> > >>>>> > more efficient to somehow take a more direct route.
>> > >>>>> >
>> > >>>>> > --
>> > >>>>> > You received this message because you are subscribed to the
>> Google Groups "sympy" group.
>> > >>>>> > To unsubscribe from this group and stop receiving emails from
>> it, send an email to sympy+unsubscr...@googlegroups.com.
>> > >>>>> > To post to this group, send email to sympy@googlegroups.com.
>> > >>>>> > Visit this group at https://groups.google.com/group/sympy.
>> > >>>>> > To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAHVvXxTeAGZUv1kdtKCvBRodMZPyX5jHh76G0M49VshwMziJZA%40mail.gmail.com
>> .
>> > >>>>> > For more options, visit https://groups.google.com/d/optout.
>> > >>>>>
>> > >>>>> --
>> > >>>>> You received this message because you are subscribed to the
>> Google Groups "sympy" group.
>> > >>>>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to sympy+unsubscr...@googlegroups.com.
>> > >>>>> To post to this group, send email to sympy@googlegroups.com.
>> > >>>>> Visit this group at https://groups.google.com/group/sympy.
>> > >>>>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAKgW%3D6JGfKjgHP3EaoX%3DXW_SMfnbGOZgi9LLJoUT3Ty7%3Dutd%2BA%40mail.gmail.com
>> .
>> > >>>>> For more options, visit https://groups.google.com/d/optout.
>> > >>>>
>> > >>>> --
>> > >>>> You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> > >>>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to sympy+unsubscr...@googlegroups.com.
>> > >>>> To post to this group, send email to sympy@googlegroups.com.
>> > >>>> Visit this group at https://groups.google.com/group/sympy.
>> > >>>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAP7f1AiMm_i%2BJBLBnv3_xzG_8Czag10DWvAUfiAhe-QUzUANiw%40mail.gmail.com
>> .
>> > >>>> For more options, visit https://groups.google.com/d/optout.
>> > >
>> > > --
>> > > You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> > > To unsubscribe from this group and stop receiving emails from it,
>> send an email to sympy+unsubscr...@googlegroups.com.
>> > > To post to this group, send email to sympy@googlegroups.com.
>> > > Visit this group at https://groups.google.com/group/sympy.
>> > > To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAKVsmS7P3w9nL%2BA9UJOnpZ4oBmc7UjGUdVjpmcFyog%2B5QwuP5g%40mail.gmail.com
>> .
>> > > For more options, visit https://groups.google.com/d/optout.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an email to sympy+unsubscr...@googlegroups.com.
>> > To post to this group, send email to sympy@googlegroups.com.
>> > Visit this group at https://groups.google.com/group/sympy.
>> > To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAHVvXxRXE%2BF%2BWVk2pY%2Bsbzem6ZTG6QrDZXh24qPtYnjdojoDmA%40mail.gmail.com
>> .
>> > For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to sympy+unsubscr...@googlegroups.com.
>> To post to this group, send email to sympy@googlegroups.com.
>> Visit this group at https://groups.google.com/group/sympy.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAKgW%3D6LZLd0kEcLGurCvmAZihW2E4dEiXx_LXQc3nKhXpFA3gA%40mail.gmail.com
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sympy+unsubscr...@googlegroups.com.
> To post to this group, send email to sympy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/CAP7f1Aj2yffQDWJH47ox3UvQUSfj_VPKgef-2b1P0FVGZqi-Mg%40mail.gmail.com
> <https://groups.google.com/d/msgid/sympy/CAP7f1Aj2yffQDWJH47ox3UvQUSfj_VPKgef-2b1P0FVGZqi-Mg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKVsmS6W9PQQi4coLzj%2Bw6AQBJewPxZUHYa4TP5%2B8snpSKZPhg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to