Closed cclauss closed 1 year ago
I pointed out in #8785 that neural_network/simple_neural_network.py
has multiple issues (I don't think it even implements a neural network) and could do with a rewrite. Ideally whatever new implementation replaces it should run a lot more quickly.
I checked the maths/prime_numbers.py file. In this file, there are three methods for finding prime numbers using different techniques. The simplest method, referred to as slow_prime (which uses a loop to iterate from 2 to n and print prime numbers), is taking a lot of time. Do we need it there? Since the other two methods are faster with just minor modifications for finding prime numbers, do we still need the slow_prime method in there?
Can slow_prime()
be tested with smaller numbers? We do not want to get rid of it but we want its test to finish faster.
https://github.com/TheAlgorithms/Python/blob/87494f1fa1022368d154477bdc035fd01f9e4382/maths/prime_numbers.py#L20-L21
Let's lower the 10_000
to 1_000
If 'slow_prime()' is tested on small test cases, then the other two methods will also be tested on small test cases to compare the time taken among them.
If I reduce the test cases, do I need to raise a PR to check whether they finished faster, or is there any other method I can use to verify if the issue is resolved before submitting a PR?
When things are run on CI platforms like GitHub Actions then an environment variable CI
is defined.
Can you use https://docs.python.org/3/library/os.html#os.getenv to see if CI
is defined? If CI
is defined then set the number to 1_000 for all three tests and it if is not defined then set it to 10_000 for all three.
Okay, thanks. Let me try.
But if it is not defined, setting the test case to 10_000 will take the same amount of time as before, doesn't it?
Yes, but we do not care because it no longer slows down our build process.
I sped it up in #9851.
I was reviewing the backtracking/power_sum.py code, and I noticed that the main issue causing slow execution is the large value of 'needed_sum' parameter.To improve performance, is it correct to reduce the 'needed_sum' value?
@duongoku Would you be willing to advise @Muhammadummerr on the best way to speed up the slow doctests in backtracking/power_sum.py ?
I would love to hear from @duongoku.
@cclauss tried backtracking/word_search.py to measure the execution time of each option:
The longest time, as expected, is 'AAAAAAAAAAAAABB', it is a gigantic number of times longer.
Output:
0.00034418300128891133 - ABCCED
0.0004890400014119223 - SEE
0.0004235089982103091 - ABCB
4.959400030202232e-05 - A
29.599618363001355 - AAAAAAAAAAAAABB
@cclauss backtracking/word_search.py: can I replace this large(AAAAAAAAAAAAABB) array with a small(ABB) one?
>>> word_exists([["B", "A", "A"], ["A", "A", "A"], ["A", "B", "A"]], "ABB")
False
If use the image lena_small.jpg
instead of lena.jpg
in: test_local_binary_pattern
, then the test will be much faster. It is not clear why lena.jpg was used? At least I don't see any reason for this.
Made a pull request #10161.
Made a pull request #10188 word_search - replacing the example in doctest.
Check the PR #9978.
@cclauss Every algorithm on your list has been sped up (except for simple_neural_network.py
, which needs to be rewritten altogether), and every fixable warning has been fixed. Do you want to update this issue's "slowest 10" checklist, or do you want to close this issue?
@CaioCordeiro Would you be willing to look at neural_network/simple_neural_network.py
to see if you can speed up its tests? As discussed above (https://github.com/TheAlgorithms/Python/issues/9718#issuecomment-1781355643), we have sped up our other slow tests but have not been able to speed up this one. I tried without success in #11013
Feature description
At the end of our GitHub Actions
build
jobs, there is a list of the slowest ones.Are there ways to speed up these tests without reducing our functionality or our code coverage?
Please only fix one algorithm per pull request.
Also, those 25 pytest warnings are worth fixing!!!