キャストによるオーバーヘッドを計測してみた
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 を使うといいかも。