for(int=0; i<1,000,000; i++)
{
if(data[i]< 0)
data[i]= data[i] * 2;
}
我想知道的是它可以計算出該算法如下如果所花費的時間來執行一個內存訪問是100納秒,並且所有其他操作的絕對速度(算術,註冊訪問等)需要10納秒?我很確定這個問題可以用來計算絕對速度。我知道我們確實有一個變量已經是Ta = 100納秒了,對嗎?剩下的缺失變量可以通過我在Java程序中編譯完成後提供的代碼行來找到?我編譯並運行它,但沒有說明我需要解決這個問題。有什麼建議麼?
這裏是我使用來計算該算法的絕對速度公式:
T=Tna X Nna + Ta X Na;
Tna= the time to execute a memory nonaccess instruction;
Nna= the number of memory nonaccess machine language instructions executed;
Ta= the time to execute a memory access instruction;
Na= the number of memory access machine language instructions executed;
這裏是我將編譯和運行,看它是否會給出一些丟失的變量的代碼,我需要解決這個問題。
對我來說,找到「絕對速度」意味着你運行它,看看它花了多長時間。你有什麼想法? –
@KevinAnderson這些步驟確定每行代碼的指令類型,無論是內存訪問還是非內存訪問 然後,您需要確定每個代碼執行的次數。 然後您將每個訪問的總數加起來 給予兩次:每個內存訪問指令爲100納秒,每個非內存訪問爲10納秒。 – dorakta
因此,「代碼行」是指Java代碼還是編譯的字節碼? –