New PC - Choice of processor
Author: sedelstein
Creation Date: 5/1/2016 6:30 PM
profile picture

sedelstein

#1
Building a new PC. One of the goals is to get backtests (esp. on minute data going way back) to be as fast as possible.

I know the best thing I can do is to get a fast Solid State Drive

After that, I'm curious as to recommendations for which i7 chip to purchase.

What matters most for speeding up WL?
CPU speed
Number of cores
Number of threads
L3 and L4 cache sizes?

There are some new i7's coming out in June 6800k, 6850k, 6900k which are 6-8 cores and 12-16 threads. The current popular i7 the 6700k is 4 core, 8 threads. Worth waiting for? Not sure yet what they will cost. The 6700 is roughly $330

Thanks for your input
profile picture

Eugene

#2
Search for threads similar to this: Look to Buy a New PC
profile picture

sedelstein

#3
Yes got that.

Nothing there there about cores / threads / cache. Do they matter?

Shall I move this conversation over to that discussion?
profile picture

Eugene

#4
profile picture

superticker

#5
QUOTE:
Building a new PC. One of the goals is to get backtests (esp. on minute data going way back) to be as fast as possible.
One minute data is a great deal of data. You'll need a CPU with as much cache as possible to fit the problem in cache.

And you may want to tweak some of the internal caching behavior of WL so it's not caching anything more than necessary so you're using every bit of your cache as judiciously as possible.

The other thing you'll be fighting is the Garbage Collection (GC) behavior of the .NET framework. Be sure none of the array sizes change that where created with the "new" operator. This includes any declared DataSeries since they all use the new operator. As long as the new operator isn't called (either to create or change object size), the GC won't need to be called. Remember the rule Hewlett Packard uses for all their avionics: All dynamic arrays must be declared and sized before the aircraft takes off. That's primarily to avoid calling the GC so deterministic execution time is realized for servicing hard real-time events. But in your case, you want to avoid calling the GC because it will greatly increase your overall execution time.

You can start by creating any DataSeries before entering the trading loop.

If you're streaming charts, the set your data ranges relative to a fixed number of bars, so the size of the dynamic arrays remains constant. Streaming intrabar activity during the trading day over a date range (instead of a fixed bar range) will dynamically change array sizes, which is why the GC is called with each new bar (pausing WL) that comes into the streaming chart.
profile picture

vk

#6
I know that most of you are just concerned about CPU and RAM power, my bigger concern is the noise that those machines produce. I can recommend this company here: http://www.deltatronic.de/de
The PC make NO noise, nada, nothing. No matter what you do. Just love it since years. ;)