With this the fifth week of the official coding period has ended. I will try to give a brief summary of my work during this week.
I spent most of this week learning the inner working of satask module. It took a lot of debugging to understand the on-going processes efficiently 😅 . My major job was to reduce the unwanted slowing portions in the code. I had #11789 for reference. Some of such performance reducing portions of code were:
- A major segment of code was creating And objects unnecessarily. As suggested in #17087 the sorting in the And constructor takes up a significant amount of time. These have to be reduced.
- Using SymPy objects is itself a bottleneck for performance. Having a system built over SymPy objects slows things down. Python’s built-in types should be used as much as possible.
- A specific segment (used many times in the code) calls
rcallover propositions. The
rcallwhich is a recursive process also takes a significant of time.
- Also, I have tried to pre-compile results as much as possible.
With the above and some other changes, the overall performance of
satask has improved much. I have made a PR over this #17144. For an instance,
|Tests||After this PR||In master|
|test_satask||2.39 s||36.26 s|
|assumptions/tests||16.74 s||127.21 s|
There is still scope for improvement in performance. In the coming week, I will try to work these out. I will also try to improve the performance of ask module.
Also, the first evaluations are over now and I feel happy to announce that I passed it. During the first phase I learnt a lot. In last few weeks I got to explore profiling and got to understand how small segments can influence performance. Before this I felt that I already know the codebase, but in reality I had much to explore. My mentors always gave me a good starting point and a direction over the course of this phase. With the hope to work much better in the coming phases, I take your leave now 😄 .