Java1.6の速度調査(2009/12/02)

プログラミング
スポンサーリンク

はじめに

Javaの速度を調べてみました。iはint型です。
代入先に書いてある型名は、代入した時の変数の型。
速度を表す値の単位は気にしないでください。相対的に見ていく感じでお願いします。

環境

Intel(R) Pentium(R) 4 CPU 3.00GHz 0.99GB RAM
WindowsXP SP3 Java(TM) SE Runtime Environment (build 1.6.0_17-b04)


足し算

int = 1 + i;
90895

int = 10 + i;
201073

long = 1l + i;
267193

long = 10l + i;
268799

float = 1f + i;
306602

double = 1.0 + i;
369100


掛け算

int = 1 * i;
225763

long = 10l * i;
526616

float = 1.0f * i;
369038

double = 1.0 * i;
435841


割り算

int = 1 / i;
1455367

long = 1l / i;
6347530

float = 1.0f / i;
1070948

double = 1.0 / i;
1338557


ビットシフト

int = i >> 1;
271325

int = i << 1;
271606

nd = i >>> 1;
271403


条件文

if(int>-1);
100823

if(int>-1) int++;
268338

if(long>-1) long++;
552858

if(float>-1.0) float++;
334916

if(double>-1.0) double++;
277108


型変換と代入

int = i;
98752

long = i;
202061

float = i;
168658

double = i;
164801


その他

r = d1[i];
g = d2[i];
b = d3[i];
675400

r = (d1[i] >> 16) & 0xff;
g = (d1[i] >> 8) & 0xff;
b = d1[i] & 0xff;
404430

ni = d1[i];
r = (ni >> 16) & 0xff;
g = (ni >> 8) & 0xff;
b = ni & 0xff;
404083

コメント

  1. 智紀 より:

    ndって何ですか><それに足し算乗除でintを除くそれぞれについて型変換が発生しているような。。。

  2. なたで より:

    おお。ndとか直しました。はい。型変換発生しています。longが遅いのと、doubleよりfloatのが早いってのと、rgbをまとめてビットシフトで管理した方が早いってのに驚きました。最近のCPUで誰か試した結果教えてください><

タイトルとURLをコピーしました