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.