2

I've built an application on Node.js and works instantly (in 300 ms) on Core i7 processor, Debian Scratch. When I try to run the same application on Raspberry, startup time is 7.2 seconds!.

While debugging, I understand that all waiting takes place on require lines. It comes to this point:

$ touch test.js
$ time node test.js 

real    0m0.930s
user    0m0.820s
sys     0m0.100s

The startup time is pretty much. Here is more timings:

// --------------------------  // startup time: 0.95 seconds
var _ = require('prelude-ls'); // adds 0.05 seconds
var io = require('socket.io'); // adds 2.20 seconds 
var Hapi = require('hapi');    // adds 4.00 seconds 
var zmq = require('zmq');      // adds 0.13 seconds 
process.exit(1)

Is it because of these two libraries, or is there anything to do with Node.js on Raspberry?

Node.js version is v0.12.6

Edit

By the way, top says Node.js consumes 103% of CPU power in these tests.

  • Your Core i7 has a clock speed several times that of the pi, and an architecture that does more per clock cycle. Additionally, it has limited memory and slooow I/O. Chances are the module files were cached in memory on your Debian system if you had run the program recently,while on the Pi, they were most likely read from SD each time. I'm not sure this explains the entire gap, but you shouldn't expect comparable performance between those two systems. – TomG Aug 17 '15 at 2:59
  • Of course I don't compare two systems :D But there is no performance difference with my other project, written in Python, on both systems. The Python codes both start instantly. What I meant by giving that "300ms" is to say: "There is no blocking/waiting code in my application" – ceremcem Aug 17 '15 at 8:55
  • Are you trying to say you have a python script that runs in the exact same time on the pi as on an i7? What does it do, nothing? I just don't believe you. Everything on the pi is going to be much slower than an i7. As others have mentioned, 20x slower in this case is not at all surprising... – goldilocks Aug 17 '15 at 10:44
  • ..The total Ghz/Mhz is not the only factor. That Intel x86_64 chip is considerably more efficient, clock cycle for clock cycle, than the 32-bit Broadcom ARM chip, because it has a more advanced instruction set and more advanced hardware optimizations. ARM architectures are optimized for power (as in, to consume less of it) and cost, not speed. I dunno how much a BCM2835 is to buy on its own, but I'd guess not more than $10. Sometimes you get what you pay for. – goldilocks Aug 17 '15 at 10:52
  • Perhaps Node.js for Pi version is catching up with the main Node development. You can try overclocking your RPi or use precompiled js files – Pie 'Oh' Pah Aug 17 '15 at 14:54
2

I would run some more checks against node version 0.10 as hapi doesn't officially support version 0.12. There is some performance regression in version 0.12 that you maybe hitting.

  • 1
    I installed v0.10.33 and above overall timing decreased from 7.2 seconds to 6.1 seconds; but this is also not acceptable. – ceremcem Aug 16 '15 at 13:19
  • There maybe some memory leak within your app. – simon-p-r Aug 16 '15 at 13:51
  • 1
    The four lines in my question is all the code I tested. There was no more code. – ceremcem Aug 16 '15 at 14:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.