stream_wrap: don't call Number::New()
authorBen Noordhuis <info@bnoordhuis.nl>
Wed, 27 Nov 2013 02:48:44 +0000 (03:48 +0100)
committerBen Noordhuis <info@bnoordhuis.nl>
Wed, 27 Nov 2013 02:53:45 +0000 (03:53 +0100)
Replace call to Number::New() with a call to Integer::NewFromUnsigned().

Profiling a Real World(TM) application with perf(1) suggests that the
conversion of its argument from integer to double is disproportionally
costly: over 60% of CPU cycles accountable to WriteStringImpl() are
attributable to the conversion.

After changing it to Integer::NewFromUnsigned(), WriteStringImpl()
has dropped from the 'most costly functions' top ten altogether.

src/stream_wrap.cc

index a1e7ded177c6384250541cd1b4e20eb19788f72e..f01884666c51573fef367eabf2ed46a19d24452e 100644 (file)
@@ -412,7 +412,7 @@ Handle<Value> StreamWrap::WriteStringImpl(const Arguments& args) {
   }
 
   req_wrap->Dispatched();
-  req_wrap->object_->Set(bytes_sym, Number::New((uint32_t) data_size));
+  req_wrap->object_->Set(bytes_sym, Integer::NewFromUnsigned(data_size));
 
   wrap->UpdateWriteQueueSize();