キャストによるオーバーヘッドを計測してみた

  
public class CastTest {
	
	public static void main(String[] args) {
		long start, end;
		start = end = 0;
		
		double d;
		float  f;
		
		// キャストなし
		start = System.currentTimeMillis();
		for(int i = 0; i < 0x5000000; i++) {
			d = Math.sin(Math.toRadians(i));
		}
		end = System.currentTimeMillis();
		System.out.println("Not using cast: " + (end - start));
		
		// キャストあり
		start = System.currentTimeMillis();
		for(int i = 0; i < 0x5000000; i++) {
			f = (float)Math.sin(Math.toRadians(i));
		}
		end = System.currentTimeMillis();
		System.out.println("Using cast: " + (end - start));
	}
	
}

実行結果

Not using cast: 13422
Using cast    : 13515

確かにキャストを使わない方が高速だが、その差は微妙。

float は double に比べメモリ消費量が半分なので、

正確な数値が必要で、ミリ秒、マイクロ秒単位で速度を要求するなら double、

そうないときは float を使うといいかも。