@@ -35,34 +35,98 @@ fmt.Println(string(data))
35
35
data , err := bencode.Unmarshal (value)
36
36
```
37
37
38
- ## Performance [ benchmarks] ( https://github.com/IncSW/go-bencode/tree/benchmarks /benchmarks )
38
+ ## Performance [ benchmarks] ( https://github.com/IncSW/go-bencode/tree/master /benchmarks )
39
39
40
40
### Go 1.16, Debian 9.1, i7-7700
41
41
42
42
### Marshal
43
43
44
- | Library | Time | Bytes Allocated | Objects Allocated |
45
- | :--------------------------- | :---------: | :-------------: | :---------------: |
46
- | IncSW/go-bencode [ MarshalTo] | 581.0 ns/op | 112 B/op | 2 allocs/op |
47
- | IncSW/go-bencode [ Marshal] | 662.6 ns/op | 624 B/op | 3 allocs/op |
48
- | marksamman/bencode | 820.3 ns/op | 384 B/op | 8 allocs/op |
49
- | cristalhq/bencode | 994.2 ns/op | 928 B/op | 4 allocs/op |
50
- | aleksatr/go-bencode | 1061 ns/op | 736 B/op | 9 allocs/op |
51
- | nabilanam/bencode | 2103 ns/op | 1192 B/op | 44 allocs/op |
52
- | jackpal/bencode-go | 4676 ns/op | 2016 B/op | 45 allocs/op |
53
- | zeebo/bencode | 4889 ns/op | 1376 B/op | 33 allocs/op |
44
+ | Library | Time | Bytes Allocated | Objects Allocated | Notes |
45
+ | :------------------ | :---------: | :-------------: | :---------------: | :---: |
46
+ | IncSW/go-bencode | 662.6 ns/op | 624 B/op | 3 allocs/op | |
47
+ | cristalhq/bencode | 939.4 ns/op | 928 B/op | 4 allocs/op | |
48
+ | marksamman/bencode | 1002 ns/op | 736 B/op | 9 allocs/op | 4 |
49
+ | aleksatr/go-bencode | 1060 ns/op | 736 B/op | 9 allocs/op | |
50
+ | chihaya/chihaya | 1722 ns/op | 1009 B/op | 53 allocs/op | 1 |
51
+ | lajide/bencode | 1725 ns/op | 1011 B/op | 53 allocs/op | 1 |
52
+ | nabilanam/bencode | 2865 ns/op | 3192 B/op | 54 allocs/op | 5 |
53
+ | anacrolix/torrent | 3179 ns/op | 1328 B/op | 25 allocs/op | |
54
+ | lwch/bencode | 3340 ns/op | 1792 B/op | 75 allocs/op | 1, 2 |
55
+ | tumdum/bencoding | 3419 ns/op | 1752 B/op | 60 allocs/op | |
56
+ | stints/bencode | 4018 ns/op | 3120 B/op | 100 allocs/op | 1, 2 |
57
+ | ehmry/go-bencode | 4569 ns/op | 1496 B/op | 33 allocs/op | |
58
+ | jackpal/bencode-go | 4702 ns/op | 2016 B/op | 45 allocs/op | |
59
+ | zeebo/bencode | 5003 ns/op | 1376 B/op | 33 allocs/op | |
60
+ | owenliang/dht | 5180 ns/op | 3279 B/op | 80 allocs/op | 5 |
61
+ | cuberat/go-bencode | 5589 ns/op | 1929 B/op | 71 allocs/op | 2 |
62
+
63
+ ### MarshalTo
64
+
65
+ | Library | Time | Bytes Allocated | Objects Allocated | Notes |
66
+ | :----------------- | :---------: | :-------------: | :---------------: | :---: |
67
+ | IncSW/go-bencode | 581.0 ns/op | 112 B/op | 2 allocs/op | |
68
+ | cristalhq/bencode | 668.4 ns/op | 0 B/op | 0 allocs/op | |
69
+ | chihaya/chihaya | 1432 ns/op | 307 B/op | 49 allocs/op | 1 |
70
+ | lajide/bencode | 1462 ns/op | 307 B/op | 49 allocs/op | 1 |
71
+ | anacrolix/torrent | 2954 ns/op | 720 B/op | 21 allocs/op | |
72
+ | lwch/bencode | 3093 ns/op | 1089 B/op | 71 allocs/op | 1, 2 |
73
+ | tumdum/bencoding | 3474 ns/op | 1752 B/op | 60 allocs/op | |
74
+ | jackpal/bencode-go | 4479 ns/op | 1408 B/op | 41 allocs/op | |
75
+ | ehmry/go-bencode | 4650 ns/op | 1528 B/op | 33 allocs/op | |
76
+ | cuberat/go-bencode | 5360 ns/op | 1321 B/op | 67 allocs/op | 2 |
54
77
55
78
### Unmarshal
56
79
57
- | Library | Time | Bytes Allocated | Objects Allocated |
58
- | :------------------ | :--------: | :-------------: | :---------------: |
59
- | IncSW/go-bencode | 1001 ns/op | 960 B/op | 18 allocs/op |
60
- | cristalhq/bencode | 1160 ns/op | 960 B/op | 18 allocs/op |
61
- | nabilanam/bencode | 1379 ns/op | 1240 B/op | 39 allocs/op |
62
- | aleksatr/go-bencode | 2270 ns/op | 1816 B/op | 51 allocs/op |
63
- | jackpal/bencode-go | 2577 ns/op | 1688 B/op | 59 allocs/op |
64
- | marksamman/bencode | 2725 ns/op | 5768 B/op | 54 allocs/op |
65
- | zeebo/bencode | 5988 ns/op | 6392 B/op | 92 allocs/op |
80
+ | Library | Time | Bytes Allocated | Objects Allocated | Notes |
81
+ | :------------------ | :---------: | :-------------: | :---------------: | :---: |
82
+ | IncSW/go-bencode | 991.5 ns/op | 960 B/op | 18 allocs/op | |
83
+ | cristalhq/bencode | 1160 ns/op | 960 B/op | 18 allocs/op | |
84
+ | nabilanam/bencode | 1379 ns/op | 1240 B/op | 39 allocs/op | |
85
+ | owenliang/dht | 1702 ns/op | 1352 B/op | 46 allocs/op | |
86
+ | aleksatr/go-bencode | 2279 ns/op | 1816 B/op | 51 allocs/op | |
87
+ | jackpal/bencode-go | 2597 ns/op | 1688 B/op | 59 allocs/op | |
88
+ | marksamman/bencode | 2758 ns/op | 5768 B/op | 54 allocs/op | |
89
+ | ehmry/go-bencode | 2865 ns/op | 2064 B/op | 41 allocs/op | |
90
+ | chihaya/chihaya | 2961 ns/op | 5880 B/op | 61 allocs/op | |
91
+ | lajide/bencode | 2973 ns/op | 5880 B/op | 61 allocs/op | |
92
+ | anacrolix/torrent | 3723 ns/op | 2456 B/op | 62 allocs/op | |
93
+ | cuberat/go-bencode | 4687 ns/op | 6544 B/op | 119 allocs/op | |
94
+ | zeebo/bencode | 5954 ns/op | 6376 B/op | 91 allocs/op | |
95
+ | tumdum/bencoding | 7891 ns/op | 6568 B/op | 157 allocs/op | |
96
+ | lwch/bencode | - | - | - | 3 |
97
+ | stints/bencode | - | - | - | 6 |
98
+
99
+ ### RealWorld [ ubuntu-21.04-desktop-amd64.iso.torrent] ( https://releases.ubuntu.com/21.04/ubuntu-21.04-desktop-amd64.iso.torrent )
100
+
101
+ | Library | Time | Bytes Allocated | Objects Allocated |
102
+ | :---------------------------- | :---------: | :-------------: | :---------------: |
103
+ | IncSW/go-bencode Unmarshal | 1279 ns/op | 1016 B/op | 21 allocs/op |
104
+ | IncSW/go-bencode Marshal | 28572 ns/op | 262816 B/op | 4 allocs/op |
105
+ | IncSW/go-bencode MarshalTo | 7800 ns/op | 160 B/op | 2 allocs/op |
106
+ | |
107
+ | |
108
+ | cristalhq/bencode Unmarshal | 1560 ns/op | 1016 B/op | 21 allocs/op |
109
+ | cristalhq/bencode Marshal | 49125 ns/op | 443168 B/op | 5 allocs/op |
110
+ | cristalhq/bencode MarshalTo | 7709 ns/op | 0 B/op | 0 allocs/op |
111
+ | |
112
+ | |
113
+ | aleksatr/go-bencode Unmarshal | 21615 ns/op | 223352 B/op | 69 allocs/op |
114
+ | aleksatr/go-bencode Marshal | 26401 ns/op | 222689 B/op | 13 allocs/op |
115
+ | |
116
+ | |
117
+ | jackpal/bencode-go Unmarshal | 48384 ns/op | 444484 B/op | 81 allocs/op |
118
+ | jackpal/bencode-go Marshal | 55097 ns/op | 445694 B/op | 60 allocs/op |
119
+ | jackpal/bencode-go MarshalTo | 35800 ns/op | 223128 B/op | 54 allocs/op |
120
+
121
+
122
+ #### Notes
123
+
124
+ 1 . BUG: Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics). http://bittorrent.org/beps/bep_0003.html#bencoding
125
+ 2 . BUG: [ ] byte encoding as a list
126
+ 3 . BUG: not supported list in list
127
+ 4 . WARN: ignoring unsupported types without errors
128
+ 5 . INFO: just 4 types supported
129
+ 6 . INFO: files only
66
130
67
131
## License
68
132
0 commit comments