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%