Subject: Re: binary plist support
To: Matt Thomas <matt@3am-software.com>
From: Jachym Holecek <freza@NetBSD.org>
List: tech-kern
Date: 10/09/2007 14:36:31
# Matt Thomas 2007-10-07:
> On Oct 6, 2007, at 1:25 PM, Jachym Holecek wrote:
> >I've implemented ${subj} for proplib:
> >
> >  ftp://ftp.netbsd.org/pub/NetBSD/misc/freza/bplist-2007-10-06.diff
> >
> >The binary encoding, which is rather size-efficient and supposedly  
> >very
> >fast as well (but I don't have numbers yet), is basically Apple bplist
> >format. But because Apple doesn't distinguish signed integers vs.  
> >unsigned,
> >the format differs slightly and uses different version number to avoid
> >confusion.
> 
> No regression tests?  Other than that it looks great!

I cleaned up the regression tests yesterday and added a benchmark suite:

  ftp://ftp.netbsd.org/pub/NetBSD/misc/freza/prop-regress-2007-10-09.tar.gz

The benchmarks revealed performance weakness in externalizer code, I've
fixed that in newer version (along with libsa compile botch):

  ftp://ftp.netbsd.org/pub/NetBSD/misc/freza/bplist-2007-10-09.diff

Benchmark results below; lower percentage is better for the "winner".

	-- Jachym

Legend:
  TRANSPORT - attempts to simulate ioctl() plist transfer
  RAW - raw internalizer + externalizer speed
  SIZE - size of externalized data

Numbers:
  PASSED aa.xml TRANSPORT bin 66% RAW bin 68% SIZE 15% 
  PASSED ab.xml TRANSPORT bin 67% RAW bin 69% SIZE 17% 
  PASSED ac.xml TRANSPORT bin 64% RAW bin 66% SIZE 14% 
  PASSED ad.xml TRANSPORT bin 76% RAW bin 79% SIZE 29% 
  PASSED ae.xml TRANSPORT bin 65% RAW bin 68% SIZE 15% 
  PASSED af.xml TRANSPORT bin 89% RAW bin 92% SIZE 28% 
  PASSED ag.xml TRANSPORT bin 90% RAW bin 94% SIZE 32% 
  PASSED ah.xml TRANSPORT bin 88% RAW bin 94% SIZE 39% 
  PASSED ai.xml TRANSPORT bin 100% RAW xml 92% SIZE 40% 
  PASSED aj.xml TRANSPORT bin 67% RAW bin 71% SIZE 25% 
  PASSED ak.xml TRANSPORT bin 71% RAW bin 72% SIZE 28% 
  PASSED al.xml TRANSPORT bin 94% RAW xml 100% SIZE 37% 
  PASSED am.xml TRANSPORT bin 88% RAW bin 92% SIZE 36% 
  PASSED an.xml TRANSPORT bin 89% RAW bin 95% SIZE 54% 
  PASSED ao.xml TRANSPORT xml 100% RAW xml 92% SIZE 42% 
  PASSED ap.xml TRANSPORT bin 76% RAW bin 83% SIZE 30% 
  PASSED aq.xml TRANSPORT bin 93% RAW bin 96% SIZE 23% 
  PASSED ar.xml TRANSPORT bin 98% RAW xml 98% SIZE 26% 
  PASSED as.xml TRANSPORT bin 83% RAW bin 88% SIZE 30% 
  PASSED at.xml TRANSPORT bin 82% RAW bin 92% SIZE 26% 
  PASSED au.xml TRANSPORT bin 85% RAW bin 92% SIZE 40% 
  PASSED av.xml TRANSPORT bin 48% RAW bin 50% SIZE 27% 
  PASSED aw.xml TRANSPORT bin 49% RAW bin 50% SIZE 48% 
  PASSED ax.xml TRANSPORT bin 40% RAW bin 40% SIZE 47% 
  PASSED ay.xml TRANSPORT bin 97% RAW xml 99% SIZE 53% 
  PASSED az.xml TRANSPORT bin 97% RAW bin 100% SIZE 42% 
  PASSED ba.xml TRANSPORT bin 72% RAW bin 79% SIZE 29%