因爲我一直在考慮一些東西做涉及Fortran代碼的分配,但唯一的問題是,我們沒有被教導這些事,所以我不完全知道發生了什麼,所以我已經試圖將它轉換成Java來試圖抓住它。以下是Fortran代碼:轉換FORTRAN循環到Java
L1: DO 20 I = 1, 512
L2: SUM(I) = 0
L3: DO 40 J = 1, I
L4: 40 SUM(I) = SUM(I) + 1
L5: 20 CONTINUE
的想法是,L2和L4都需要一個機器週期,我得把它需要多長時間循環完成。以下是我的Java,我認爲至少是相當接近的鍛鍊價值我想:
public static void main(String[] args) {
int cycles = 0;
for(int i = 1; i < 512; i++){
cycles = cycles + 1;
for(int j = 1; j < i; j++){
cycles = cycles +1;
}
}
System.out.println(cycles);
}
這個問題似乎正確嗎?任何幫助表示讚賞。我已經通過數學思考並得到了不同的答案(儘管兩者都很接近),所以我不確定哪個更好。
編輯:我想明確指出,我並不是試圖直接將FORTRAN移植到Java,而只是使用Java來計算上述循環時間。
編輯2:我沒有試圖創建數組,只計算循環期間所採用的週期。因爲L2和L4兩行都需要一個循環,所以我只在Java中交換它以計算所採用的週期,而不是做FORTRAN循環做的事情。
你的陳述應該是「<=」不是「<」。你錯過了一些週期。 –
爲什麼downvoted -2? –
@HighPerformanceMark ooops,現在打了一個錯字 - 修正它。它是I + 1. – whitfin