Skip to main content

bencode-c

bencode serialize/deserialize written in native c extension.

pip install bencode-c
import bencode_c

# NOTICE: we decode bencode bytes to bytes, not str.
assert bencode_c.bdecode(b'd5:hello5:worlde') == {b'hello': b'world'}

assert bencode_c.bencode(...) == b'...'

Benchmark

this maybe the fastest bencode library in python.

compared packages:

test cases are 40 torrents from real world.

(windows, python3.10 AMD R7 5800X)

Decode

------------------------------------------------------------ benchmark 'case=decode': 4 tests ------------------------------------------------------------
Name (time in us)                      Mean                    Min                    Max                 Median              StdDev            Iterations
----------------------------------------------------------------------------------------------------------------------------------------------------------
test_benchmark[decode-abi3]      1,024.6516 (1.0)         987.3901 (1.0)       1,097.5088 (1.0)       1,010.7185 (1.0)       42.6630 (1.0)            1013
test_benchmark[decode-cy]        2,471.1399 (2.41)      2,269.6842 (2.30)      2,592.6601 (2.36)      2,484.0398 (2.46)     121.1285 (2.84)           1000
test_benchmark[decode-mypy]      7,451.1057 (7.27)      7,319.7134 (7.41)      7,697.5504 (7.01)      7,399.4402 (7.32)     149.9720 (3.52)            127
test_benchmark[decode-py]       21,020.7260 (20.51)    20,832.5390 (21.10)    21,180.5220 (19.30)    21,047.4730 (20.82)    139.9841 (3.28)            100
----------------------------------------------------------------------------------------------------------------------------------------------------------

Encode

--------------------------------------------------- benchmark 'case=encode': 4 tests ---------------------------------------------------
Name (time in ms)                  Mean                Min                Max             Median            StdDev            Iterations
----------------------------------------------------------------------------------------------------------------------------------------
test_benchmark[encode-abi3]      4.2812 (1.0)       4.1505 (1.0)       4.3833 (1.0)       4.2897 (1.0)      0.0843 (1.56)           1000
test_benchmark[encode-mypy]      5.0277 (1.17)      4.9340 (1.19)      5.0887 (1.16)      5.0244 (1.17)     0.0606 (1.12)           1000
test_benchmark[encode-cy]        5.7779 (1.35)      5.7304 (1.38)      5.8682 (1.34)      5.7562 (1.34)     0.0541 (1.0)             178
test_benchmark[encode-py]       13.7456 (3.21)     13.5073 (3.25)     14.0211 (3.20)     13.5974 (3.17)     0.2524 (4.67)            100
----------------------------------------------------------------------------------------------------------------------------------------

(linux, python3.10, Intel G6405)

Decode

--------------------------------------------------- benchmark 'case=decode': 4 tests ---------------------------------------------------
Name (time in ms)                  Mean                Min                Max             Median            StdDev            Iterations
----------------------------------------------------------------------------------------------------------------------------------------
test_benchmark[decode-abi3]      1.9905 (1.0)       1.6988 (1.0)       2.4797 (1.0)       1.9208 (1.0)      0.3053 (1.0)             121
test_benchmark[decode-cy]        3.1906 (1.60)      2.6953 (1.59)      3.6342 (1.47)      3.2118 (1.67)     0.3971 (1.30)            100
test_benchmark[decode-mypy]     12.7124 (6.39)     11.4128 (6.72)     14.8851 (6.00)     12.4180 (6.46)     1.3009 (4.26)             18
test_benchmark[decode-py]       36.5785 (18.38)    33.5474 (19.75)    44.7655 (18.05)    34.5241 (17.97)    4.7173 (15.45)            10
----------------------------------------------------------------------------------------------------------------------------------------

Encode

--------------------------------------------------- benchmark 'case=encode': 4 tests ---------------------------------------------------
Name (time in ms)                  Mean                Min                Max             Median            StdDev            Iterations
----------------------------------------------------------------------------------------------------------------------------------------
test_benchmark[encode-abi3]      4.5476 (1.0)       4.2847 (1.0)       4.9841 (1.0)       4.4301 (1.0)      0.2711 (1.0)             100
test_benchmark[encode-cy]        6.3922 (1.41)      5.9589 (1.39)      6.8652 (1.38)      6.1731 (1.39)     0.4102 (1.51)            100
test_benchmark[encode-mypy]      7.8197 (1.72)      7.2574 (1.69)      8.3987 (1.69)      7.8091 (1.76)     0.4947 (1.82)            100
test_benchmark[encode-py]       23.9431 (5.26)     23.4045 (5.46)     24.2830 (4.87)     24.0749 (5.43)     0.3818 (1.41)             10
----------------------------------------------------------------------------------------------------------------------------------------

development

git clone -r https://github.com/trim21/bencode-c bencode-c
cd bencode-c
python -m venv .venv
# enable venv
source .venv/bin/activate

pip install -e .

pytest -sv

CMakeLists.txt is for IDE to find includes, not for building files.

use setup.py to build python extension.

Metadata

Release files for bencode-c 0.0.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bencode-c 0.0.14
File Size Uploaded
bencode_c-0.0.14.tar.gz 14.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for bencode-c 0.0.14
File
bencode_c-0.0.14-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
bencode_c-0.0.14-cp38-abi3-win32.whl CPython 3.8 abi3 Windows x86-32 Details
bencode_c-0.0.14-cp38-abi3-musllinux_1_2_x86_64.whl CPython 3.8 abi3 Linux musl 1.2+ x86-64 Details
bencode_c-0.0.14-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details
bencode_c-0.0.14-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details
bencode_c-0.0.14-cp38-abi3-macosx_10_9_x86_64.whl CPython 3.8 abi3 macOS 10.9+ x86-64 Details

Total release size: 213.9 kB

Release files / bencode_c-0.0.14.tar.gz

Download URL bencode_c-0.0.14.tar.gz
Size 14.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8bc5e6f71b67776020c2bdd036cc3716dc8e28640bc987debb6bd6b9c7931396
BLAKE2b-256 checksum
How to use checksums
98bd41e0cac72d96c89aa9bf52011c73598dd440b95affb6dcf508d3b3a7cd3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / bencode_c-0.0.14-cp38-abi3-win_amd64.whl

Download URL bencode_c-0.0.14-cp38-abi3-win_amd64.whl
Size 23.1 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e5ca6f49df9b390b20306bf2719b0d5a02160673bae678a896a89c32d3cc40a8
BLAKE2b-256 checksum
How to use checksums
d31f405b8530ab949e569a821377f2a521c70f68065ad85b21a1144c593922a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / bencode_c-0.0.14-cp38-abi3-win32.whl

Download URL bencode_c-0.0.14-cp38-abi3-win32.whl
Size 22.6 kB
Tags CPython 3.8 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
83fbb1746deae6f8f6f416da867a9f88974b5efcb73a00a7f1f8c90d1d0514a6
BLAKE2b-256 checksum
How to use checksums
414438980767780facd5fa11247634b5e1681aa86d1a971cfc74b30e2d477acf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / bencode_c-0.0.14-cp38-abi3-musllinux_1_2_x86_64.whl

Download URL bencode_c-0.0.14-cp38-abi3-musllinux_1_2_x86_64.whl
Size 55.5 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
57d7ebcc5eba21acd812a2899ce02b4e04235a7f4008089ada83bb07e7942e5b
BLAKE2b-256 checksum
How to use checksums
a3a91536b7a8385a9f6cec83e429e6cf87e9d729d7e27518c826d985bdab2715
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / bencode_c-0.0.14-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bencode_c-0.0.14-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 56.7 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
23754d45f9ad456d3aa666d804caafac88f9e7a8d1bd98888a0774035e3a2c3e
BLAKE2b-256 checksum
How to use checksums
ab72c1cb81ab02dd66cf9e443aa901fc9c6e35b23ae4861c52dff9b4dbb6439a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / bencode_c-0.0.14-cp38-abi3-macosx_11_0_arm64.whl

Download URL bencode_c-0.0.14-cp38-abi3-macosx_11_0_arm64.whl
Size 20.7 kB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1a3323f2537463d2deb2c4e76b1418d72da06e4e9dbb830e5b003ca6bd8d1551
BLAKE2b-256 checksum
How to use checksums
373581916e8a6c6d3fc2e097ad11629532fa74d6d7baa80c7928d06f2655d883
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / bencode_c-0.0.14-cp38-abi3-macosx_10_9_x86_64.whl

Download URL bencode_c-0.0.14-cp38-abi3-macosx_10_9_x86_64.whl
Size 20.9 kB
Tags CPython 3.8 abi3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
e93e210c3d560d9af30976d9198d5c9538ce003da1dd8ddef9682b75a9c27532
BLAKE2b-256 checksum
How to use checksums
f44e1bb07a37038aa91336f68c329a015c163461ce8f35f273f86375a17e291f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.0.14 This release

7 release files

0.0.13

7 release files

0.0.12

7 release files

0.0.11

7 release files

0.0.10

7 release files

0.0.9

7 release files

0.0.8

7 release files

0.0.7

7 release files

0.0.6

7 release files

0.0.5

7 release files

0.0.4

7 release files

0.0.2

7 release files

0.0.1

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page