Considering vars, structs or arrays of medium size which allows to allocate them on the stack (for instance as function local vars) the question is:
If the program performs massive computaions using those vars is the program more fast if those vars are on the stack or if they are declared outside of the function as static? And also in this case may it's better to renounce to program simplicity using longer names so that they don't need to be passed by reference?
That is better example 1 or 2 or 3?
Ex.1:
Code:
static float EffectiveUniqueInput[100];
MassiveComputation(float EffectiveUniqueInput[100])
{
float a[100];
float L[100];
float l[100][100];
for(..)
{
for(..)
{
l[i][j]=L[j]*cos(a[i])+L[j]*sin(a[i]);
}
}
}
main()
{
..
MassiveComputation(EffectiveUniqueInput);
..
}
Ex.2:
Code:
static float EffectiveUniqueInput[100];
static float MassiveComputation_a[100];
static float MassiveComputation_L[100];
static float MassiveComputation_l[100][100];
MassiveComputation(float EffectiveUniqueInput[100],float a[100], float L[100], float l[100][100])
{
for(..)
{
for(..)
{
l[i][j]=L[j]*cos(a[i])+L[j]*sin(a[i]);
}
}
}
main()
{
..
MassiveComputation(EffectiveUniqueInput, fMassiveComputation_a, MassiveComputation_L, MassiveComputation_l);
..
}
Ex.3:
Code:
static float EffectiveUniqueInput[100];
static float MassiveComputation_a[100];
static float MassiveComputation_L[100];
static float MassiveComputation_l[100][100];
MassiveComputation(float EffectiveUniqueInput[100])
{
for(..)
{
for(..)
{
MassiveComputation_l[i][j]=MassiveComputation_L[j]*cos(MassiveComputation_a[i])+MassiveComputation_L[j]*sin(MassiveComputation_a[i]);
}
}
}
main()
{
..
MassiveComputation(EffectiveUniqueInput);
..
}