On 2023-07-11 at 00:01:32 -0400, Peter Ratzlaff via pdl-devel wrote: > Hello, > > I've pasted the code below, since I'm not sure attachments will make it to > the list. I have a program that does something similar to this. Obviously > not as simple, but using the same concept: an inner loop using the index() > function with an argument calculated from the outer loop. > > In PDL 2.082 it loops at a consistent speed. But in PDL 2.083, each > successive loop takes longer than the previous, and the real code becomes > unusable, practically speaking. > > On my particular machine, with PDL 2.082 the included code runs in 13 > seconds, real time. With PDL 2.083, it's 5 minutes. > > Any thoughts would be appreciated. > > Thanks, > Pete > > #! /usr/bin/perl > > use strict; > use warnings; > > use PDL; > > my $n = 700; > > my $a = sequence($n)->dummy(0, $n)->flat; > my $b = sequence($n)->dummy(1, $n)->flat; > > for my $a_val (0..$n-1) { > printf "%d / %d\n", $a_val, $n-1; > my $ind1 = which($a == $a_val); > for my $b_val (0..$n-1) { > my $ind2 = which($b->index($ind1) == $b_val); > } > }
Hello Peter, Thank you for identifying this. Ed, I have run a git bisect and found that the first commit that has this slow down is: # first bad commit: [03c3793f36b5739138751dd06f4b2334e0d3c7fe] use ArgOrder to simplify Ops overloads Script: git bisect start 2.083 2.082 git bisect run bash -c 'make -j$(nproc); timeout 20s perl -Mblib ../test.pl || exist 125' where `test.pl` contains the attached example. I don't have the tuits to investigate just now, but hopefully that is a start. Regards, - Zaki Mughal > > > _______________________________________________ > pdl-devel mailing list > pdl-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/pdl-devel _______________________________________________ pdl-devel mailing list pdl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pdl-devel