Optimizing backtest performance


I'm trying to make sure I have my setup configured for optimal backtest performance. I have read all the AmiBroker multithreading guides and have followed their advice, and I'm wondering if anyone else could do a test as a way of double-checking that the performance is about as good as I'm going to get.

For my data provider, I'm using Norgate's Premium Data. But for some long backtests I have AmiBroker set to "local database" and have local data storage enabled.

My In-Memory cache size is set to 5000 symbols, 4000 MB.

My backtest filter is set to basically everything except indexes. So about 43,000 symbols.

I am backtesting for the 2001-2017 time period.

As a way of doing a simple verification, this is my AFL:

Buy = False;
Sell = False;
Short = False;
Cover = False;

After I run this backtest once or twice I can see in the Windows Task Manager that the disk is no longer being accessed, as AmiBroker has everything cached. So this should be optimal.

This particular machine has 4 cores E3-1230 processor, but as explained in the multi-threading guide, since the AFL is doing no useful work, almost all the time is occupied by the "data" step which is single-threaded.

So I get the following in the Info tab after benchmarking:

Completed in 90.00 seconds. Number of rows = 0
(Timings: data: 75.80, setup: 0.70, afl: 10.47, job: 12.86, lock: 0.57, pbt: 3.42, UI thread: 79.92, worker threads: 23.33/22.77 )

I'm wondering if anyone else would be able to run this AFL on a similar sized database and share their timings, to see if mine is in the ballpark of what other people are getting, so I can be confident that I have everything set correctly so it is operating about as fast as I can get with this machine. 90 seconds for these symbols means an average of about 2.1 ms per symbol for the 2001-2017 time period.