Another interesting interview questionThe reason why I saw a question in "deep into the computer architecture" should be clear.
The questions are as follows:
Two identical functionsCodeAs follows,In the case of A, B, and C, please give three reasons: Case 1 is faster than Case 2, and Case 2 is faster than Case 1.(Compiler optimization is not considered)
Case 1
|
For(I =0; I <n; ++ I ){ A; B; C; } |
Case 2
|
For(I =0; I <n; ++ I ){ A; } For(I =0; I <n; ++ I ){ B; } For(I =0; I <n; ++ I ){ C; } |
My Solutions
Int Length = 10000 ;
Int [,] A = New Int [
Length,
Length];
Int [,] B = New Int [Length, length];
Int [,] C = New Int [Length, length];
Stopwatch watch = New Stopwatch ();
Watch. Start ();
For ( Int I = 0 ; I <length; I ++)
{
Int Temp = 0 ;
Temp = A [I, I];
Temp = B [I, I];
Temp = C [I, I];
}
Watch. Stop ();
Console. writeline (" Case 1 : "+ Watch. elapsedmilliseconds );
Watch. Restart ();
For ( Int I = 0 ; I <length; I ++)
{
Int Temp = 0 ;
Temp = A [I, I];
}
For ( Int I = 0 ; I <length; I ++)
{
Int Temp =0 ;
Temp = B [I, I];
}
For ( Int I = 0 ; I <length; I ++)
{
Int Temp = 0 ;
Temp = C [I, I];
}
Watch. Stop ();
Console. writeline (" Case 2 : "+ Watch. elapsedmilliseconds );