Evaluating CPU cores for optimisation - page 11

 
Aleksey Vyazmikin:

The question arises, what is the effect - of course I have seen from the code, that in fact they have removed "if"? But I would like a comment, because it is not clear what is the gain in terms of faster logic.

Intuitive solution - move large code into function (even better would be in separate include), get rid of if, increment and break.

I'm also very confused about getting the values of the variables to be analyzed. In the test example, these are randoms, but in reality? I would already leave pure boolean values there to check (bool_a > 10.0) instead of (double_a).

 
Igor Zakharov:

New build, new tester, new compiler... the summary table is missing the "build mt5" column

So far the result is stable - checked yesterday, so don't expect performance jumps from build to build.

 
Andrey Khatimlianskii:

The intuitive solution is to put the large code into a function (or better yet, into a separate inlude) and get rid of if, increment and break.

In fact, it's already a function, so it's not clear why there's such a performance gain!

I use inlude in my working code, but it's purely code migration, how do you propose to organise it? Bray adds significantly to performance - how do I get rid of it so that I don't lose speed?

Andrey Khatimlianskii:

I'm also very confused by getting the values of the analyzed variables. In the test example it's randoms, but in reality? I would already leave pure boolean values there, so I could check (bool_a > 10.0) instead of (double_a).

In reality it's the same as double - the data is taken from an external file, which is read completely into the buffer during initialization. So I didn't understand exactly how to make a bool out of them.

 
Maxim Romanov:
The 3800x almost caught up with the i7 8700 in terms of performance on stream. And it came off the 2700.
This is probably due to reduced memory latency and twice as much cache.
Conclusion: for mt5, the deciding factor is the memory access latency and the memory read speed.
This is also confirmed by the low performance on the 2990 wx thread. They have high memory latencies despite the 4-channel and specific cache handling.
So the speed of the cores themselves is not that important.
Maybe that's how it works.

and the 3800X isn't supposed to break away from the 2700?

 
Aleksey Vyazmikin:

Then I will assume that during optimization the frequency drops simply by ideology. For the sake of interest, do a longer run of any EA - not 16 passes, but say 160 - I wonder how it changes the time of pass - the difference should be minimal - within 1 second.

F


PS Maybe you have a test that loads RAM?

 
Pavel Verveyko:

F


PS Maybe you have a test that loads RAM?

Thanks, the average was about the same as the 16 passes - we'll assume that's the correct data.

For memory, unfortunately, there is nothing suitable in the public domain.

 
Pavel Verveyko:

Shouldn't the 3800X have broken away from the 2700?

It should have, I suggested reasons to build on in the future when selecting hardware.
 
Maxim Romanov:
I should have, I assumed the reasons, so that I have something to base my choice of iron on in the future.

Got it, thanks.

 
Aleksey Vyazmikin:

Bray adds significantly to performance - how do I get rid of it so I don't lose speed?

Replace it with a return, like in my example.


Aleksey Vyazmikin:

In reality it's also double - data is taken from external file, which is read completely into buffer during initialization. That's why I didn't understand how exactly to make it a bool.

Instead of

int Povtor_High_M1 = X;

if ( Povtor_High_M1>=0 ) ***

if ( Povtor_High_M1< 0 ) ***

Make

bool Povtor_High_M1 = (X >= 0);

if ( Povtor_High_M1 ) ***

if ( !Povtor_High_M1 ) ***
 
Andrey Khatimlianskii:

Replace with a retournee, as in my example.


Instead of

Make

Unfortunately, I'm not smart, but X>=0 may be larger than any other number - there are many combinations - you cannot foresee everything in the code, and the code will grow by many orders of magnitude due to various combinations.