On Mar 24, 2011, at 9:01 PM, Damien Katz wrote:

> After discovering the huge amounts of CPU we spend parsing and encoding
> JSON, I've been working on getting big num support into Paul Davis's JSON
> NIF parser so we can include it in CouchDB a get nice performance win. I'm
> really loving the NIF interface and it's potential to give us performance
> boosts in CouchDB's CPU intensive areas. With the NIF support, we are
> going to see a much faster CouchDB.
> 
> However, the problem is they don't work pre R14B.
> 
> So to include NIF functions and get the gains, either we need to raise the
> minimal Erlang version of trunk CouchDB for R14B, OR  have both a slow
> erlang version of the NIF for older version, and fast NIF version for
> newer versions and a way to load the different versions. Maybe the NIF
> system has that stuff built in, or maybe we can do it somehow with the
> build system.
> 
> Since this is trunk, we'll be raising the minimal version of something
> like 1.2, not 1.0.3, for example. Anyway, wanted to get that out there and
> see what people think about how to handle it.
> 
> -Damien

I have no qualms about raising the minimum required Erlang version, but I 
thought NIFs naturally allowed for pure-Erlang alternative implementations.  
From http://www.erlang.org/doc/tutorial/nif.html:

> [A]ll NIFs of a module must have an Erlang implementation as well. Normally 
> these are minimal stub implementations that throw an exception. But it can 
> also be used as fallback implementations for functions that do not have 
> native implemenations on some architectures.

Regards, Adam

Reply via email to