最近测试arm服务器(装的是ubuntu 12.10)发现一个问题,就是对比测试atom和arm时,跑c语言程序大家性能差不多,跑java程序却相差很远
这是我抄的Montecarlo算法

https://github.com/RobinDong/arm_server/tree/master/MonteCarlo

c和java两种实现,其中c实现在arm上跑需要13秒,在atom上跑需要10秒,相差不多;
但是,如果跑java,arm需要1分40秒,atom只需要12秒

问了公司的同事,告知我是没有装hotspot,推荐我安装oracle的jvm
里面headless是不带图形库的,于是下了一个“ARMv7 Linux - Headless - Server Compiler EABI, VFP, SoftFP ABI, Little Endian“,解开后运行 ejre1.7.0_10/bin/java,结果却显示:

-bash: ejre1.7.0_10/bin/java: No such file or directory

冤家路窄,之前我在cubieboard上也遇到过类似的报错,明明是个静态的二进制可运行文件,一跑就说"No such file"云云,这次好好找了一下解决方法,果然在pandaboard的社区里找到一串遇到同样问题的兄弟

https://groups.google.com/forum/?fromgroups=#!topic/pandaboard/bb53tEV5GKA

原来oracle的这个静态可执行的"java"文件里写死了依赖/lib/ld-linux.so.3,且只支持软浮点数的libc,解决方法超简单:

sudo apt-get install -y libc6-armel libsfgcc1

然后再ejre1.7.0_10/bin/java运行就没问题了。
我用oracl的jvm跑了一下先前的MontoCarla程序,在arm上也只需要19秒了。