jeroen/protolite

High-performance it really ain't

Closed this issue · 2 comments

You may want to consider RApiSerialize which, after all, was written for this purpose (and inherited from another HPC application).

See the benchmark in my updated answer here.

(I see the DESCRIPTION got edited. Good. If it were to focus on, say, "smaller" or "light-weight" it may be truthful. "Fast" it ain't.)

The serialize stuff is only a fallback for non-data objects that cannot be serialized by protobuf. The 'optimized' refers to the implementation of the protobuf serializer:

> library(ggplot2)
> data(diamonds)
> system.time(RProtoBuf::serialize_pb(diamonds, NULL))
   user  system elapsed 
  0.043   0.001   0.044 
> system.time(protolite::serialize_pb(diamonds, NULL))
   user  system elapsed 
  0.008   0.000   0.008 

The difference is even larger for character vectors:

> x <- as.character(diamonds$cut)
> system.time(protolite::serialize_pb(x, NULL))
   user  system elapsed 
  0.023   0.002   0.025 
> system.time(RProtoBuf::serialize_pb(x, NULL))
   user  system elapsed 
  6.525   0.029   6.555 

Fine. You still have no reason to use the Rcpp::Environment kludge to serialize to raw given that a dedicated C implementation exists.

But your package so I don't give a fiddle.