MathGroup Archive 2014

[Date Index] [Thread Index] [Author Index]

Search the Archive

M9 performance regression for Fold?

  • To: mathgroup at
  • Subject: [mg132264] M9 performance regression for Fold?
  • From: Yi Wang <tririverwangyi at>
  • Date: Tue, 28 Jan 2014 06:13:02 -0500 (EST)
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:


I noticed an over 10x performance drop on Mathematica v9.0.1 compared with v7.01 for this code:

SetSystemOptions["CatchMachineUnderflow" -> False];
 Fold[{(#[[1]] Sin[10.5])/(#2 + 1), #[[2]] + Tan[#[[1]]]} &, {Sin[
    10.5], 1.0}, N@Range[10^6]]

I got {0.184287, {0., 0.105747}} on v7, but got {2.311755, {0., 0.105747}} on v9. Note that the Do[...] version of above code needs about 2 seconds. Thus I suspect that on v9 the Fold code is not properly auto-compiled.

Is this a regression? (Also is there a way to see if auto-compile worked or not?)


PS: To compare, I also tried the following code, where the performance on v7 and v9 are roughly the same (v9 is on average 5% more slowly though).

AbsoluteTiming@Fold[# + Sin[#2] &, 1.0, Range[10^6]]

A difference is that here the first argument of function in Fold is a number, and in the problematic example, the first argument is a list.

PS: I noticed this issuee during a discussion at

  • Prev by Date: How Can I Change the Appearance of a Locator in Manipulate
  • Next by Date: Re: Pure functions vs rule based functions inside NIntegrate
  • Previous by thread: Re: How Can I Change the Appearance of a Locator in Manipulate
  • Next by thread: Re: ???