プロが教える店舗&オフィスのセキュリティ対策術

Java初心者です。ずっとC言語をやっていました。
Javaにはポインタは存在せず(実際は参照渡しなのでポインタその
ものなのですが)、ポインタに対する演算はありませんよね。

C言語で、

int buf[2*10];

int *dst = buf;

for(i=0;i<10;i++){
dst[0]=a;
dst[1]=b;
dst += 2;
}

のようなソースをJavaで書こうとすると、

for(i=0;i<10;i++){
buf[i*2+0]=a;
buf[i*2+1]=b;
}

しか思いつきません。

コンパイルして最適化されれば問題ないと思いますが、
なんか配列中の演算が演算量をとりそうで、気になっています。

もっと高速に処理されるような書き方はないものでしょうか?

アドバイスよろしくお願いします。

A 回答 (1件)

ループ中の i*2 が共通なので


for (i = 0, j = 0; i < 10; i++, j+=2) {
buf[j] = a;
buf[j+1] = b;
}
と書いたらもうちょっとは速くなるかもね, くらいか?
    • good
    • 0
この回答へのお礼

確かに、それぐらいしてあげれば、コンパイラで
最適化されそうですね。

お礼日時:2009/08/28 17:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!