Java and Floating Point

IM3000 Speed and Efficiency for Java Bytecode Interpretationand Floating Point Arithmetic

These benchmarks from Systronix Inc. repeat JVM bytecodes (using varying data) during a fixed time, recording the number of executions. Thus, higher number means higher speed. The ARM9 (an Atmel chip in the Sun eSPOT unit) is produced in a 0.18um CMOS process similar to that used for IM3000.

Imsys IM3000

ARM9

IM3000 vs. ARM9

167MHz

180MHz

32768 element byte array 262144 element accesses

375564

479239

0,8

32768 element byte array 262144 element copies (note 5)

65536000

6241523

10,5

16383 element int array 131072 element accesses (note 1)

372363

432580

0,9

16383 element int array 131072 element copies (note 5)

14563555

1927529

7,6

byte add

1960784

1438848

1,4

byte sub

2352941

1449275

1,6

byte mul

1739130

1428571

1,2

byte div

1129943

1190476

0,9

int add

326264

1724137

0,2

int sub

318979

1724137

0,2

int mul

310559

1652892

0,2

int div

287356

1369863

0,2

float add

649350

250000

2,6

float sub

630914

246002

2,6

float mul

714285

199401

3,6

float div

326264

100452

3,2

double add

415800

226500

1,8

double sub

404040

215517

1,9

double mul

362976

193236

1,9

double div

144822

70348

2,1

string concat

544

533

1,0

string compare

17331

67340

0,3

method calls

45197

706713

0,1

object creations

11806

86206

0,1

GEOMETRIC MEAN, ALL

371474

384112

1,0

GEOMETRIC MEAN, float add/sub/mul/div

555869

187345

3,0

Each line represents a group of related benchmarks and the number is the geometric medium of the numbers for the group members. Green color marks the groups for which the Imsys processor is faster than the ARM. 

The test is unfair to Imsys since these small benchmarks (unlike normal software) fit entirely in the cache memory of the ARM, but the ARM still doesn’t outperform the Imsys processor (which has no cache). Remarkably, Imsys has better floating-point performance although it has a smaller multiplier than the ARM and no dedicated floating-point hardware.