Page MenuHomeFreeBSD

Prototype of replacing bsdiff's qsufsort with Yuta Mori's libdivsufsort.
AbandonedPublic

Authored by delphij on May 25 2016, 7:45 AM.
Tags
None
Referenced Files
F154923647: D6556.id16853.diff
Thu, Apr 30, 2:13 AM
Unknown Object (File)
Wed, Apr 22, 7:41 AM
Unknown Object (File)
Sat, Apr 18, 3:43 PM
Unknown Object (File)
Wed, Apr 15, 3:17 AM
Unknown Object (File)
Tue, Apr 14, 9:45 PM
Unknown Object (File)
Mon, Apr 13, 2:31 PM
Unknown Object (File)
Wed, Apr 8, 9:50 PM
Unknown Object (File)
Mar 28 2026, 6:56 AM
Subscribers

Details

Reviewers
cperciva
Summary

This is a preliminary proof-of-concept implementation of bsdiff
using libdivsufsort instead of qsufsort. (if we consider this
as the right direction I'll import the code into vendor area
instead).

My test shows this would offer a 36% speed up for generating
patch.

Ported from Chromium: https://chromium-review.googlesource.com/#/c/1080/

x before
+ after
+------------------------------------------------------------+

+ x
+ x
+ x
++ xx
AA

+------------------------------------------------------------+

N           Min           Max        Median           Avg        Stddev

x 5 8.56 8.6 8.58 8.584 0.016733201
+ 5 5.41 5.44 5.43 5.426 0.011401754
Difference at 95.0% confidence
-3.158 +/- 0.0208817
-36.7894% +/- 0.243263%
(Student's t, pooled s = 0.0143178)

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 3944
Build 3987: arc lint + arc unit

Event Timeline

delphij retitled this revision from to Prototype of replacing bsdiff's qsufsort with Yuta Mori's libdivsufsort..
delphij updated this object.
delphij edited the test plan for this revision. (Show Details)
delphij added a reviewer: cperciva.

library code taken from https://github.com/y-256/libdivsufsort; bsdiff change adapted from Chromium source.

usr.bin/bsdiff/bsdiff/config.h
1

Generated with -DCMAKE_BUILD_TYPE="Release" -DBUILD_DIVSUFSORT64=ON

usr.bin/bsdiff/bsdiff/divsufsort.c
1

vendor code unchanged.

usr.bin/bsdiff/bsdiff/divsufsort64.h
1

Generated file.

usr.bin/bsdiff/bsdiff/divsufsort_private.h
1

Vendor file.

usr.bin/bsdiff/bsdiff/sssort.c
1

Vendor file.

usr.bin/bsdiff/bsdiff/trsort.c
1

Vendor file.

usr.bin/bsdiff/bsdiff/utils.c
1

Vendor file.

The change was merged as rS303285.