What's "slow?" foo() is cached but @time isn't. Are you sure you're not timing the @time macro on your 3rd run?
On Wednesday, October 26, 2016 at 4:16:55 PM UTC-4, Michael Wooley wrote: > > Hi, I'm trying to speed up some code and have found something curious that > I can't quite understand from the "performance tips" section. > > I understand that I shouldn't time my code on the first run because that > will include compilation time and so forth. > > The odd thing that I can't understand is that there seems to be a lot of > overhead every time I pass an new argument to my function. So, e.g., > > # Create two instances of type test > test1 = test() > test2 = test() > # Run to get in cache - slow (as expected) > foo!(test1) > # Run again - fast (as expected) > foo!(test1) > # Run on test2 - Slow (not expected. should be fast because foo!() in > cache?) > @time foo!(test2) > # Run on test2 again - fast (??) > @time foo!(test2) > > I have used @code_warntype to try to get rid of type instability in my > code to no avail. > > I know that the main bottleneck in my code is a triple-nested loop over > large arrays. > > I recognize that my pseudo-example is kind of vague but thought I'd try > this first in case this sort of behavior is indicative of a basic issue > that I've overlooked. I can provide my full code if that would be helpful. > Thanks in advance! >