[ADMB Users] Differences in speed of ADMB versions?

Arni Magnusson arnima at hafro.is
Sun Apr 24 17:27:29 PDT 2011

Tim, Allan, and Ian have discovered what looks a bug in ADMB 10.0 and 
10.1, possibly related to rewritten matrix operations. See below.

On Fri, 22 Apr 2011, Ian Taylor wrote:

I'd say this is a question for the ADMB-users or ADMB-developers lists. 
Fournier or Derek Seiple (who I think did the reprogramming) could have 
some insights, and at minimum should be made aware of the issue.

On Fri, 22 Apr 2011, Tim Miller wrote:

That is interesting you're getting the same behavior with Visual C++. 
Perhaps you're right about some newer algorithms being slower, but I hope 
not. The reason I was updating to ADMB10 was to take advantage of the new 
matrix exponential function.  Also, I notice the same drop in speed for 
one of my own problems that only uses the basic matrix operations (e.g., 

On Thu, 21 Apr 2011, Allan Hicks wrote:

That is interesting because with one test case of an SS3 model compiled 
with MS Visual C++ I found that ADMB 9.0 ran slower than ADMB 10.0. 
However, this is confounded with changing versions of MS Visual C++ also. 
So, I replicated your test of the n2mvol example with MS Visual C++ and 
found your same result. ADMB 10 ran much much slower. However, check the 
file called n2mvol.log to see if any of the gradient files have a size 
larger than zero for your compilers.  It seems to me that ADMB10 uses more 
memory and the example was on the edge where ADMB 10 had to write to 
temporary files. Running with a command line option -gbs 500000000 reduced 
the file sizes to zero, but it still ran slower.  I'm not sure why, after 
eliminating the temporary files.

n2mvol_v9  -gbs 500000000   77 seconds
n2mvol_v10 -gbs 500000000  352 seconds

n2mvol_v9  -gbs 500000000 -nohess   46 seconds
n2mvol_v10 -gbs 500000000 -nohess  119 seconds

I am pretty sure that I am compiling with the same options.  It would be 
interesting to trace the time through the code to see where the difference 
is. I am speculating that one or more of the matrix functions (inv or 
solve maybe) was recoded in ADMB 10 and is a slower algorithm.  Just a 

I can say that seeing Borland run slower than MinGW is not surprising. 
Arni has shown that Borland typically runs slowest of all compilers.

Sorry that I haven't been a help and didn't provide a solution, but this 
is very interesting and brings up the question of how does ADMB 9 compare 
to ADMB 10, and where specifically are the differences seen.

On Thu, 21 Apr 2011, Ian Taylor wrote:

I haven't noticed any strong differences. I'm cc'ing Allan Hicks, because 
he's done more version comparing recently than I have. Coincidentally, 
there was just some discussion this morning about moving the official 
releases of Stock Synthesis to ADMB 10.1, so it will be good to understand 
what's going on.

As far as I know, the biggest difference is in a few of the algorithms, so 
perhaps the speed hit could depend on what kind of algorithms are needed 
for a given model.

On Thu, 21 Apr 2011, Tim Miller wrote:

Have you noticed differences in the speed of optimization when code is 
optimized under version 10.0 vs. 9.0? My 9.0 is with MinGW, but I have 
10.0 with both MinGW and Borland and both of the newer versions are MUCH 
slower than the 9.0 version.  These are windows binaries. I have found 
this phenomenon with both one of my own models as well as the "vol" 
example. Maybe the default options at compiling have changed?

More information about the Users mailing list