Skip to main content
19 events
when toggle format what by license comment
Mar 25, 2019 at 18:35 history edited Szabolcs CC BY-SA 4.0
deleted 12 characters in body
Feb 17, 2017 at 22:00 comment added Wjx @Szabolcs Yeah, I see. Truely wierd phenomenon. This will lead to a performance drop I suppose?
Feb 17, 2017 at 9:26 comment added Wjx Yeah, Just a reminder that the selection of Select and UnitStep based solution still depends on one's application~ even in this case where Select "saved" 10000 times of calculation, it's only less than 10 times faster, so it's really inefficient in most cases.
Feb 17, 2017 at 9:21 comment added Szabolcs @Wjx Vectorization is always fast, but the code is hard to read and write (in Mathematica, not e.g. in MATLAB). With this code, and later with BoolEval, I tried to make it easy to read/write as well. Sadly, some bugs prevent me from doing this. Try e.g. arr = RandomReal[1, 100]; On["Packing"], then evaluate arr > 0.5. It unpacks. Why does it do that? I don't know. It doesn't even evaluate! Maybe it's a bug. Last time I complained to WRI, the support person did not understand my point and kept saying that arr < 0.5 is not correct syntax. I know, but that's no excuse for unpacking.
Feb 17, 2017 at 9:14 comment added Szabolcs @Wjx There are serious limitations that make this hard to implement well, e.g. Greater taking a long time to "evaluate" when it doesn't in fact evaluate at all. Things change with M versions too. Please check if it's better with the BoolEval package. I don't have time to look into this now.
Feb 17, 2017 at 9:14 comment added Wjx I suppose it's quite hard to solve this problem using UnitStep based solution, it's a cost of vectorization I suppose?
Feb 17, 2017 at 9:10 comment added Wjx Test code: cond1 = Evaluate[And @@ ConstantArray[# > 1, 1*^4]] &; dat = RandomReal[1, 1*^4]; Select[dat, cond1] // AbsoluteTiming returns {11.7397, {}} while cond = And @@ ConstantArray[dat > 1, 1*^5]; dat = RandomReal[1, 1*^4]; pick[dat, cond] // AbsoluteTiming returns {79.1119, {}}
Feb 17, 2017 at 9:10 comment added Wjx There are some condition where Select works better than UnitStep based solution. Notice that Select based solution can utilize the fact that True || a series of stuffs will always be True and False && a series of stuffs will always be False. so there's no need for evaluation of "a series of stuffs". While UnitStep based solution cannot easily use this fact. so when tests are significantly more than elements in list, performance can reverse.
Jul 11, 2016 at 8:51 comment added Mr.Wizard By the way this may be relevant to you: (1922)
Jul 11, 2016 at 8:47 comment added Szabolcs @Mr.Wizard Good point, thank you!
Jul 11, 2016 at 8:17 comment added Mr.Wizard Have you considered using Subtract for performance in the package code?
Sep 29, 2015 at 8:03 history edited Szabolcs CC BY-SA 3.0
added 27 characters in body
May 30, 2014 at 15:29 history edited Szabolcs CC BY-SA 3.0
added 141 characters in body
Feb 11, 2014 at 20:14 history edited Szabolcs CC BY-SA 3.0
added 220 characters in body
Feb 11, 2014 at 19:50 history edited Szabolcs CC BY-SA 3.0
added 142 characters in body
Feb 11, 2014 at 19:37 history edited Szabolcs CC BY-SA 3.0
added 1211 characters in body
Mar 12, 2012 at 0:33 vote accept Brian B
Mar 12, 2012 at 18:07
Mar 11, 2012 at 21:00 history edited Szabolcs CC BY-SA 3.0
added 1288 characters in body
Mar 11, 2012 at 20:26 history answered Szabolcs CC BY-SA 3.0