Skip to content

Better understanding library size #969

@thunderbiscuit

Description

@thunderbiscuit

I've been thinking about how to reduce binary sizes for the libraries, mostly as I am looking forward to adding more clients to the lib, for example the RPC client, the Electrum Streaming Client, and Floresta.

In an attempt to better understand which part of the codebase is contributing to the binary size, I started by removing what I considered was probably the biggest culprits, the clients (partially because they ship with the whole http stack). The data surprised me a little bit.

Current lib size on master (2946cc1) for Android binaries

 14M    arm64-v8a/libbdkffi.so
9.9M    armeabi-v7a/libbdkffi.so
 13M    x86_64/libbdkffi.so

Lib size if you remove all clients (Android binaries)

9.5M    arm64-v8a/libbdkffi.so
7.0M    armeabi-v7a/libbdkffi.so
8.8M    x86_64/libbdkffi.so

Mmmm....

Ok so the above is not quite what I was expecting. Take for example the most important of those, the arm64-v8a. From 14 to 9.5 MB? I was hoping to cut it down by much more.

It turns out that at least for Android, a big part of what's in this 9.5MB binary is the SQLite libary that is shipped wholesale with rusqlite (need more exact size data on this).

I'm not done the investigation on this, but I had enough to open the issue. More to come.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions