superbuffer 0.2.0.0 → 0.2.0.1
raw patch · 4 files changed
+261/−255 lines, 4 files
Files
- README.md +256/−250
- cbits/superbuffer.c +3/−3
- package.yaml +1/−1
- superbuffer.cabal +1/−1
README.md view
@@ -6,9 +6,7 @@ The `superbuffer` packages was designed to efficiently build up bytestrings from `IO` actions producing smaller chunks. The goal was to reduce memory overhead as much as possible while still being as fast as possible. In our use case, it reduced total memory usage of the program from `350 MB` (`bytestring` builder) to `50 MB` (`superbuffer`).-For speed see benchmarks below. Note that the speed heavily depends on a good choice of the initial buffer size and-the size of the chunks written. For small chunks the `superbuffer` outperforms the `bytestring` alternatives consistently. `superbuffer`-also outperforms `buffer-builder`.+For speed see benchmarks below. Note that the speed heavily depends on a good choice of the initial buffer size. `superbuffer` outperforms or performs similar to the `bytestring` alternatives consistently. `superbuffer` outperforms `buffer-builder`. ## Usage @@ -33,362 +31,370 @@ ``` benchmarking main/small/superbuffer (init=128 bytes)-time 20.69 ms (20.18 ms .. 21.25 ms)+time 20.22 ms (19.77 ms .. 20.76 ms) 0.997 R² (0.994 R² .. 0.999 R²)-mean 21.79 ms (21.35 ms .. 22.38 ms)-std dev 1.252 ms (699.1 μs .. 1.804 ms)-variance introduced by outliers: 23% (moderately inflated)+mean 20.15 ms (19.91 ms .. 20.40 ms)+std dev 575.0 μs (436.3 μs .. 739.6 μs) benchmarking main/small/superbuffer (init=4000 bytes)-time 21.39 ms (20.63 ms .. 22.61 ms)- 0.992 R² (0.984 R² .. 0.997 R²)-mean 22.40 ms (21.98 ms .. 22.86 ms)-std dev 997.0 μs (831.8 μs .. 1.181 ms)+time 20.08 ms (19.56 ms .. 20.79 ms)+ 0.996 R² (0.993 R² .. 0.999 R²)+mean 20.17 ms (19.85 ms .. 20.66 ms)+std dev 905.1 μs (625.2 μs .. 1.335 ms) variance introduced by outliers: 14% (moderately inflated) benchmarking main/small/superbuffer (init=8000 bytes)-time 20.94 ms (20.45 ms .. 21.41 ms)- 0.998 R² (0.996 R² .. 0.999 R²)-mean 21.80 ms (21.40 ms .. 22.64 ms)-std dev 1.249 ms (488.7 μs .. 1.935 ms)-variance introduced by outliers: 23% (moderately inflated)+time 23.72 ms (23.21 ms .. 24.34 ms)+ 0.997 R² (0.995 R² .. 0.999 R²)+mean 23.92 ms (23.55 ms .. 24.52 ms)+std dev 1.001 ms (673.0 μs .. 1.587 ms)+variance introduced by outliers: 15% (moderately inflated) benchmarking main/small/superbuffer (init=16000 bytes)-time 21.86 ms (21.52 ms .. 22.29 ms)- 0.998 R² (0.997 R² .. 0.999 R²)-mean 21.90 ms (21.64 ms .. 22.32 ms)-std dev 718.4 μs (447.8 μs .. 1.181 ms)+time 24.15 ms (23.79 ms .. 24.58 ms)+ 0.999 R² (0.998 R² .. 0.999 R²)+mean 23.98 ms (23.69 ms .. 24.55 ms)+std dev 863.6 μs (487.1 μs .. 1.517 ms) benchmarking main/small/superbuffer (init=20000000 bytes)-time 38.11 ms (36.81 ms .. 39.41 ms)- 0.995 R² (0.988 R² .. 0.998 R²)-mean 35.36 ms (33.46 ms .. 36.66 ms)-std dev 3.174 ms (2.018 ms .. 4.414 ms)-variance introduced by outliers: 36% (moderately inflated)+time 11.48 ms (6.634 ms .. 14.10 ms)+ 0.645 R² (0.346 R² .. 0.854 R²)+mean 23.80 ms (20.34 ms .. 27.33 ms)+std dev 8.484 ms (7.385 ms .. 9.868 ms)+variance introduced by outliers: 95% (severely inflated) benchmarking main/small/superbuffer (init=128 bytes, threadsafe, 2 concurrent writes)-time 26.21 ms (25.50 ms .. 27.02 ms)- 0.996 R² (0.992 R² .. 0.998 R²)-mean 25.38 ms (24.94 ms .. 25.83 ms)-std dev 1.015 ms (828.2 μs .. 1.274 ms)+time 23.15 ms (22.24 ms .. 24.28 ms)+ 0.993 R² (0.987 R² .. 0.997 R²)+mean 24.41 ms (23.96 ms .. 24.85 ms)+std dev 1.012 ms (809.8 μs .. 1.434 ms)+variance introduced by outliers: 15% (moderately inflated) benchmarking main/small/superbuffer (init=4000 bytes, threadsafe, 2 concurrent writes)-time 34.67 ms (33.62 ms .. 35.59 ms)- 0.996 R² (0.990 R² .. 0.999 R²)-mean 32.54 ms (30.79 ms .. 33.70 ms)-std dev 2.867 ms (1.986 ms .. 3.938 ms)-variance introduced by outliers: 36% (moderately inflated)+time 24.99 ms (23.79 ms .. 26.02 ms)+ 0.994 R² (0.990 R² .. 0.997 R²)+mean 24.02 ms (23.60 ms .. 24.48 ms)+std dev 1.004 ms (831.7 μs .. 1.228 ms)+variance introduced by outliers: 15% (moderately inflated) benchmarking main/small/superbuffer (init=8000 bytes, threadsafe, 2 concurrent writes)-time 31.54 ms (30.29 ms .. 32.49 ms)- 0.994 R² (0.988 R² .. 0.998 R²)-mean 31.80 ms (31.03 ms .. 32.62 ms)-std dev 1.600 ms (1.285 ms .. 2.193 ms)-variance introduced by outliers: 17% (moderately inflated)+time 25.30 ms (24.78 ms .. 26.00 ms)+ 0.998 R² (0.996 R² .. 0.999 R²)+mean 25.37 ms (24.98 ms .. 26.10 ms)+std dev 1.148 ms (621.8 μs .. 1.891 ms)+variance introduced by outliers: 15% (moderately inflated) benchmarking main/small/superbuffer (init=16000 bytes, threadsafe, 2 concurrent writes)-time 33.81 ms (32.98 ms .. 34.81 ms)- 0.996 R² (0.991 R² .. 0.999 R²)-mean 30.72 ms (29.28 ms .. 31.86 ms)-std dev 2.803 ms (2.157 ms .. 3.648 ms)-variance introduced by outliers: 34% (moderately inflated)+time 25.45 ms (24.73 ms .. 26.36 ms)+ 0.996 R² (0.992 R² .. 0.998 R²)+mean 24.24 ms (23.80 ms .. 24.72 ms)+std dev 1.020 ms (825.0 μs .. 1.335 ms)+variance introduced by outliers: 15% (moderately inflated) benchmarking main/small/superbuffer (init=20000000 bytes, threadsafe, 2 concurrent writes)-time 18.96 ms (18.51 ms .. 19.47 ms)- 0.997 R² (0.994 R² .. 0.999 R²)-mean 19.32 ms (19.05 ms .. 19.78 ms)-std dev 819.1 μs (465.1 μs .. 1.158 ms)-variance introduced by outliers: 13% (moderately inflated)+time 31.89 ms (30.17 ms .. 34.05 ms)+ 0.987 R² (0.979 R² .. 0.994 R²)+mean 30.33 ms (29.35 ms .. 31.28 ms)+std dev 2.038 ms (1.752 ms .. 2.381 ms)+variance introduced by outliers: 22% (moderately inflated) benchmarking main/small/buffer-builder (init=128 bytes, trim=yes)-time 28.90 ms (27.46 ms .. 30.66 ms)- 0.991 R² (0.982 R² .. 0.999 R²)-mean 28.51 ms (27.96 ms .. 29.19 ms)-std dev 1.321 ms (914.7 μs .. 1.826 ms)-variance introduced by outliers: 16% (moderately inflated)+time 27.32 ms (26.65 ms .. 28.22 ms)+ 0.996 R² (0.991 R² .. 0.999 R²)+mean 27.12 ms (26.62 ms .. 27.58 ms)+std dev 1.045 ms (758.8 μs .. 1.413 ms)+variance introduced by outliers: 10% (moderately inflated) benchmarking main/small/buffer-builder (init=4000 bytes, trim=yes)-time 24.84 ms (24.26 ms .. 25.42 ms)- 0.998 R² (0.996 R² .. 0.999 R²)-mean 24.89 ms (24.64 ms .. 25.13 ms)-std dev 599.3 μs (498.5 μs .. 738.3 μs)+time 27.72 ms (26.43 ms .. 28.85 ms)+ 0.994 R² (0.990 R² .. 0.998 R²)+mean 26.85 ms (26.33 ms .. 27.48 ms)+std dev 1.254 ms (953.7 μs .. 1.868 ms)+variance introduced by outliers: 16% (moderately inflated) benchmarking main/small/buffer-builder (init=8000 bytes, trim=yes)-time 25.31 ms (24.89 ms .. 25.86 ms)- 0.998 R² (0.996 R² .. 0.999 R²)-mean 25.16 ms (24.89 ms .. 25.40 ms)-std dev 561.7 μs (441.5 μs .. 740.7 μs)+time 26.93 ms (26.03 ms .. 27.75 ms)+ 0.997 R² (0.995 R² .. 0.999 R²)+mean 26.03 ms (24.99 ms .. 26.46 ms)+std dev 1.420 ms (578.2 μs .. 2.534 ms)+variance introduced by outliers: 21% (moderately inflated) benchmarking main/small/buffer-builder (init=16000 bytes, trim=yes)-time 25.16 ms (24.64 ms .. 25.67 ms)+time 27.18 ms (26.63 ms .. 27.72 ms) 0.998 R² (0.996 R² .. 0.999 R²)-mean 25.00 ms (24.71 ms .. 25.29 ms)-std dev 656.4 μs (502.2 μs .. 849.0 μs)+mean 26.58 ms (26.05 ms .. 26.91 ms)+std dev 907.8 μs (570.8 μs .. 1.417 ms)+variance introduced by outliers: 10% (moderately inflated) benchmarking main/small/buffer-builder (init=20000000 bytes, trim=yes)-time 26.82 ms (21.08 ms .. 36.36 ms)- 0.808 R² (0.744 R² .. 0.999 R²)-mean 22.40 ms (21.28 ms .. 26.63 ms)-std dev 4.332 ms (512.5 μs .. 8.479 ms)-variance introduced by outliers: 72% (severely inflated)+time 39.64 ms (37.58 ms .. 41.77 ms)+ 0.993 R² (0.988 R² .. 0.997 R²)+mean 36.84 ms (33.85 ms .. 38.83 ms)+std dev 4.888 ms (1.424 ms .. 6.918 ms)+variance introduced by outliers: 52% (severely inflated) benchmarking main/small/bytestring builder-time 29.94 ms (27.48 ms .. 32.70 ms)- 0.983 R² (0.968 R² .. 0.999 R²)-mean 31.64 ms (30.78 ms .. 32.14 ms)-std dev 1.435 ms (452.0 μs .. 2.120 ms)-variance introduced by outliers: 11% (moderately inflated)+time 25.99 ms (25.26 ms .. 26.86 ms)+ 0.997 R² (0.995 R² .. 0.999 R²)+mean 26.82 ms (26.10 ms .. 28.67 ms)+std dev 2.472 ms (847.5 μs .. 4.346 ms)+variance introduced by outliers: 40% (moderately inflated) benchmarking main/small/bytestring fromChunks-time 26.12 ms (25.64 ms .. 26.60 ms)- 0.998 R² (0.995 R² .. 0.999 R²)-mean 26.43 ms (26.02 ms .. 27.23 ms)-std dev 1.229 ms (671.2 μs .. 2.004 ms)-variance introduced by outliers: 15% (moderately inflated)+time 24.71 ms (23.97 ms .. 25.61 ms)+ 0.996 R² (0.994 R² .. 0.999 R²)+mean 25.10 ms (24.78 ms .. 25.46 ms)+std dev 762.7 μs (615.2 μs .. 972.1 μs) benchmarking main/small/bytestring concat-time 26.74 ms (25.57 ms .. 28.26 ms)- 0.993 R² (0.988 R² .. 0.999 R²)-mean 26.14 ms (25.72 ms .. 26.89 ms)-std dev 1.152 ms (450.9 μs .. 1.703 ms)-variance introduced by outliers: 15% (moderately inflated)+time 24.33 ms (23.59 ms .. 25.07 ms)+ 0.997 R² (0.996 R² .. 0.999 R²)+mean 24.82 ms (24.37 ms .. 26.35 ms)+std dev 1.561 ms (507.3 μs .. 3.049 ms)+variance introduced by outliers: 25% (moderately inflated) benchmarking main/med/superbuffer (init=128 bytes)-time 23.30 ms (22.09 ms .. 24.39 ms)- 0.991 R² (0.986 R² .. 0.996 R²)-mean 22.32 ms (21.82 ms .. 22.98 ms)-std dev 1.315 ms (966.3 μs .. 1.872 ms)-variance introduced by outliers: 24% (moderately inflated)+time 20.24 ms (19.67 ms .. 20.82 ms)+ 0.996 R² (0.993 R² .. 0.998 R²)+mean 21.88 ms (21.34 ms .. 22.69 ms)+std dev 1.544 ms (1.054 ms .. 2.186 ms)+variance introduced by outliers: 32% (moderately inflated) benchmarking main/med/superbuffer (init=40000 bytes)-time 24.98 ms (24.71 ms .. 25.24 ms)- 0.999 R² (0.999 R² .. 1.000 R²)-mean 25.30 ms (25.09 ms .. 25.70 ms)-std dev 609.2 μs (346.4 μs .. 1.017 ms)+time 20.93 ms (20.47 ms .. 21.46 ms)+ 0.997 R² (0.994 R² .. 0.999 R²)+mean 21.22 ms (20.87 ms .. 21.75 ms)+std dev 985.4 μs (696.1 μs .. 1.269 ms)+variance introduced by outliers: 18% (moderately inflated) benchmarking main/med/superbuffer (init=80000 bytes)-time 20.93 ms (20.43 ms .. 21.26 ms)- 0.998 R² (0.995 R² .. 0.999 R²)-mean 22.82 ms (22.30 ms .. 23.63 ms)-std dev 1.499 ms (1.115 ms .. 2.075 ms)-variance introduced by outliers: 24% (moderately inflated)+time 21.63 ms (21.14 ms .. 22.09 ms)+ 0.998 R² (0.997 R² .. 0.999 R²)+mean 21.44 ms (21.26 ms .. 21.61 ms)+std dev 401.8 μs (319.6 μs .. 550.9 μs) benchmarking main/med/superbuffer (init=160000 bytes)-time 22.90 ms (22.48 ms .. 23.39 ms)- 0.999 R² (0.997 R² .. 0.999 R²)-mean 23.07 ms (22.76 ms .. 23.32 ms)-std dev 647.4 μs (469.5 μs .. 928.6 μs)+time 21.92 ms (21.58 ms .. 22.35 ms)+ 0.998 R² (0.997 R² .. 0.999 R²)+mean 22.14 ms (21.80 ms .. 23.03 ms)+std dev 1.207 ms (476.2 μs .. 2.235 ms)+variance introduced by outliers: 19% (moderately inflated) benchmarking main/med/superbuffer (init=20000000 bytes)-time 37.53 ms (36.30 ms .. 39.25 ms)- 0.995 R² (0.990 R² .. 0.998 R²)-mean 33.78 ms (32.04 ms .. 35.11 ms)-std dev 3.209 ms (2.374 ms .. 4.178 ms)-variance introduced by outliers: 36% (moderately inflated)+time 36.50 ms (35.29 ms .. 37.98 ms)+ 0.995 R² (0.989 R² .. 0.998 R²)+mean 35.84 ms (34.96 ms .. 36.70 ms)+std dev 1.785 ms (1.412 ms .. 2.334 ms)+variance introduced by outliers: 17% (moderately inflated) benchmarking main/med/superbuffer (init=128 bytes, threadsafe, 2 concurrent writes)-time 23.38 ms (22.62 ms .. 24.39 ms)- 0.995 R² (0.990 R² .. 0.999 R²)-mean 23.25 ms (22.88 ms .. 23.86 ms)-std dev 1.059 ms (684.7 μs .. 1.649 ms)-variance introduced by outliers: 14% (moderately inflated)+time 21.15 ms (18.68 ms .. 23.97 ms)+ 0.950 R² (0.908 R² .. 0.980 R²)+mean 24.94 ms (23.67 ms .. 26.24 ms)+std dev 2.822 ms (2.391 ms .. 3.339 ms)+variance introduced by outliers: 51% (severely inflated) benchmarking main/med/superbuffer (init=40000 bytes, threadsafe, 2 concurrent writes)-time 20.71 ms (19.29 ms .. 21.60 ms)- 0.984 R² (0.965 R² .. 0.997 R²)-mean 23.39 ms (22.47 ms .. 24.91 ms)-std dev 2.656 ms (1.445 ms .. 4.134 ms)-variance introduced by outliers: 53% (severely inflated)+time 21.79 ms (21.24 ms .. 22.38 ms)+ 0.997 R² (0.995 R² .. 0.999 R²)+mean 21.96 ms (21.66 ms .. 22.56 ms)+std dev 946.4 μs (527.5 μs .. 1.690 ms)+variance introduced by outliers: 14% (moderately inflated) benchmarking main/med/superbuffer (init=80000 bytes, threadsafe, 2 concurrent writes)-time 22.01 ms (21.56 ms .. 22.63 ms)- 0.997 R² (0.993 R² .. 0.999 R²)-mean 22.14 ms (21.90 ms .. 22.51 ms)-std dev 701.7 μs (429.9 μs .. 927.8 μs)+time 20.33 ms (19.97 ms .. 20.79 ms)+ 0.998 R² (0.996 R² .. 0.999 R²)+mean 21.51 ms (21.06 ms .. 22.95 ms)+std dev 1.825 ms (481.4 μs .. 3.324 ms)+variance introduced by outliers: 37% (moderately inflated) benchmarking main/med/superbuffer (init=160000 bytes, threadsafe, 2 concurrent writes)-time 21.90 ms (21.60 ms .. 22.27 ms)- 0.999 R² (0.998 R² .. 0.999 R²)-mean 22.06 ms (21.86 ms .. 22.31 ms)-std dev 508.7 μs (386.9 μs .. 661.0 μs)+time 20.96 ms (20.72 ms .. 21.25 ms)+ 0.999 R² (0.998 R² .. 1.000 R²)+mean 20.67 ms (20.48 ms .. 20.86 ms)+std dev 427.3 μs (339.9 μs .. 590.7 μs) benchmarking main/med/superbuffer (init=20000000 bytes, threadsafe, 2 concurrent writes)-time 16.40 ms (15.91 ms .. 16.82 ms)- 0.997 R² (0.995 R² .. 0.999 R²)-mean 16.62 ms (16.41 ms .. 17.18 ms)-std dev 832.9 μs (303.1 μs .. 1.620 ms)-variance introduced by outliers: 20% (moderately inflated)+time 15.53 ms (14.71 ms .. 16.32 ms)+ 0.990 R² (0.984 R² .. 0.996 R²)+mean 17.04 ms (16.20 ms .. 19.15 ms)+std dev 3.153 ms (803.4 μs .. 5.600 ms)+variance introduced by outliers: 78% (severely inflated) benchmarking main/med/buffer-builder (init=128 bytes, trim=yes)-time 28.20 ms (25.06 ms .. 30.59 ms)- 0.975 R² (0.965 R² .. 0.988 R²)-mean 24.56 ms (23.74 ms .. 25.91 ms)-std dev 2.181 ms (1.301 ms .. 2.714 ms)-variance introduced by outliers: 35% (moderately inflated)+time 27.03 ms (26.42 ms .. 27.71 ms)+ 0.997 R² (0.994 R² .. 0.999 R²)+mean 27.12 ms (26.81 ms .. 27.50 ms)+std dev 764.3 μs (640.0 μs .. 905.9 μs) benchmarking main/med/buffer-builder (init=40000 bytes, trim=yes)-time 23.99 ms (23.69 ms .. 24.34 ms)- 0.999 R² (0.998 R² .. 1.000 R²)-mean 23.72 ms (23.50 ms .. 23.97 ms)-std dev 531.5 μs (405.4 μs .. 771.5 μs)+time 24.45 ms (23.87 ms .. 25.04 ms)+ 0.998 R² (0.997 R² .. 0.999 R²)+mean 25.75 ms (25.17 ms .. 27.17 ms)+std dev 1.860 ms (737.2 μs .. 3.305 ms)+variance introduced by outliers: 30% (moderately inflated) benchmarking main/med/buffer-builder (init=80000 bytes, trim=yes)-time 21.96 ms (21.57 ms .. 22.41 ms)- 0.998 R² (0.997 R² .. 0.999 R²)-mean 22.18 ms (21.96 ms .. 22.49 ms)-std dev 639.7 μs (406.5 μs .. 1.025 ms)+time 25.41 ms (24.69 ms .. 25.96 ms)+ 0.997 R² (0.995 R² .. 0.999 R²)+mean 25.03 ms (24.65 ms .. 25.52 ms)+std dev 953.1 μs (712.1 μs .. 1.322 ms) benchmarking main/med/buffer-builder (init=160000 bytes, trim=yes)-time 22.29 ms (21.98 ms .. 22.60 ms)- 0.999 R² (0.998 R² .. 1.000 R²)-mean 21.84 ms (21.61 ms .. 22.04 ms)-std dev 461.6 μs (367.1 μs .. 581.4 μs)+time 20.74 ms (19.45 ms .. 22.54 ms)+ 0.987 R² (0.976 R² .. 0.998 R²)+mean 21.97 ms (21.18 ms .. 23.30 ms)+std dev 2.232 ms (1.143 ms .. 3.201 ms)+variance introduced by outliers: 43% (moderately inflated) benchmarking main/med/buffer-builder (init=20000000 bytes, trim=yes)-time 39.52 ms (29.98 ms .. 47.38 ms)- 0.876 R² (0.799 R² .. 0.949 R²)-mean 26.21 ms (23.50 ms .. 30.85 ms)-std dev 7.684 ms (4.775 ms .. 9.081 ms)-variance introduced by outliers: 88% (severely inflated)+time 42.12 ms (40.02 ms .. 45.54 ms)+ 0.986 R² (0.972 R² .. 0.996 R²)+mean 34.61 ms (30.88 ms .. 37.15 ms)+std dev 6.081 ms (4.260 ms .. 7.559 ms)+variance introduced by outliers: 67% (severely inflated) benchmarking main/med/bytestring builder-time 21.52 ms (20.81 ms .. 22.22 ms)- 0.996 R² (0.993 R² .. 0.999 R²)-mean 23.98 ms (23.12 ms .. 25.68 ms)-std dev 2.780 ms (1.529 ms .. 4.683 ms)-variance introduced by outliers: 53% (severely inflated)+time 21.46 ms (21.04 ms .. 21.91 ms)+ 0.998 R² (0.996 R² .. 0.999 R²)+mean 22.20 ms (21.92 ms .. 22.56 ms)+std dev 769.1 μs (561.8 μs .. 1.135 ms) benchmarking main/med/bytestring fromChunks-time 24.67 ms (23.05 ms .. 26.69 ms)- 0.981 R² (0.961 R² .. 0.994 R²)-mean 23.98 ms (23.31 ms .. 24.75 ms)-std dev 1.563 ms (1.232 ms .. 1.893 ms)-variance introduced by outliers: 25% (moderately inflated)+time 21.76 ms (21.32 ms .. 22.18 ms)+ 0.998 R² (0.996 R² .. 0.999 R²)+mean 21.70 ms (21.44 ms .. 22.49 ms)+std dev 915.7 μs (377.2 μs .. 1.650 ms)+variance introduced by outliers: 14% (moderately inflated) benchmarking main/med/bytestring concat-time 22.40 ms (21.95 ms .. 22.86 ms)- 0.998 R² (0.996 R² .. 0.999 R²)-mean 23.13 ms (22.80 ms .. 24.16 ms)-std dev 1.202 ms (496.7 μs .. 2.131 ms)-variance introduced by outliers: 19% (moderately inflated)+time 21.71 ms (20.96 ms .. 22.47 ms)+ 0.996 R² (0.993 R² .. 0.998 R²)+mean 21.85 ms (21.52 ms .. 22.36 ms)+std dev 922.0 μs (638.6 μs .. 1.303 ms)+variance introduced by outliers: 14% (moderately inflated) benchmarking main/large/superbuffer (init=128 bytes)-time 25.83 ms (25.33 ms .. 26.30 ms)- 0.998 R² (0.997 R² .. 0.999 R²)-mean 26.00 ms (25.73 ms .. 26.33 ms)-std dev 662.6 μs (483.0 μs .. 977.9 μs)+time 20.19 ms (19.47 ms .. 20.74 ms)+ 0.996 R² (0.992 R² .. 0.998 R²)+mean 22.49 ms (21.65 ms .. 23.82 ms)+std dev 2.533 ms (1.626 ms .. 3.812 ms)+variance introduced by outliers: 51% (severely inflated) benchmarking main/large/superbuffer (init=400000 bytes)-time 21.47 ms (20.73 ms .. 22.38 ms)- 0.995 R² (0.991 R² .. 0.998 R²)-mean 23.46 ms (22.95 ms .. 24.10 ms)-std dev 1.282 ms (979.1 μs .. 1.725 ms)-variance introduced by outliers: 19% (moderately inflated)+time 21.03 ms (20.42 ms .. 21.69 ms)+ 0.997 R² (0.995 R² .. 0.999 R²)+mean 21.17 ms (20.81 ms .. 21.85 ms)+std dev 1.095 ms (623.6 μs .. 1.826 ms)+variance introduced by outliers: 18% (moderately inflated) benchmarking main/large/superbuffer (init=800000 bytes)-time 25.44 ms (25.11 ms .. 25.82 ms)- 0.999 R² (0.998 R² .. 1.000 R²)-mean 25.43 ms (25.13 ms .. 25.93 ms)-std dev 816.9 μs (415.0 μs .. 1.352 ms)+time 28.01 ms (27.01 ms .. 29.08 ms)+ 0.992 R² (0.981 R² .. 0.998 R²)+mean 27.51 ms (26.32 ms .. 28.46 ms)+std dev 2.271 ms (1.609 ms .. 3.314 ms)+variance introduced by outliers: 32% (moderately inflated) benchmarking main/large/superbuffer (init=1600000 bytes)-time 30.79 ms (30.24 ms .. 31.43 ms)- 0.999 R² (0.997 R² .. 0.999 R²)-mean 30.44 ms (29.56 ms .. 30.92 ms)-std dev 1.449 ms (716.6 μs .. 2.528 ms)-variance introduced by outliers: 16% (moderately inflated)+time 22.41 ms (21.10 ms .. 23.55 ms)+ 0.991 R² (0.985 R² .. 0.997 R²)+mean 24.47 ms (23.70 ms .. 25.88 ms)+std dev 2.373 ms (1.559 ms .. 3.479 ms)+variance introduced by outliers: 43% (moderately inflated) benchmarking main/large/superbuffer (init=20000000 bytes)-time 10.63 ms (4.936 ms .. 14.51 ms)- 0.543 R² (0.201 R² .. 0.768 R²)-mean 27.28 ms (22.58 ms .. 32.47 ms)-std dev 10.98 ms (9.673 ms .. 12.05 ms)-variance introduced by outliers: 95% (severely inflated)+time 16.26 ms (15.84 ms .. 16.73 ms)+ 0.996 R² (0.993 R² .. 0.998 R²)+mean 16.36 ms (16.15 ms .. 16.71 ms)+std dev 645.5 μs (444.5 μs .. 1.039 ms)+variance introduced by outliers: 12% (moderately inflated) benchmarking main/large/superbuffer (init=128 bytes, threadsafe, 2 concurrent writes)-time 21.41 ms (20.05 ms .. 22.66 ms)- 0.991 R² (0.986 R² .. 0.996 R²)-mean 24.39 ms (23.58 ms .. 25.36 ms)-std dev 2.007 ms (1.499 ms .. 2.498 ms)-variance introduced by outliers: 34% (moderately inflated)+time 21.83 ms (21.42 ms .. 22.27 ms)+ 0.998 R² (0.997 R² .. 0.999 R²)+mean 22.34 ms (22.00 ms .. 23.16 ms)+std dev 1.137 ms (507.0 μs .. 2.059 ms)+variance introduced by outliers: 19% (moderately inflated) benchmarking main/large/superbuffer (init=400000 bytes, threadsafe, 2 concurrent writes)-time 22.25 ms (21.85 ms .. 22.80 ms)- 0.998 R² (0.996 R² .. 0.999 R²)-mean 22.25 ms (22.01 ms .. 22.49 ms)-std dev 553.6 μs (427.9 μs .. 702.3 μs)+time 20.75 ms (20.19 ms .. 21.11 ms)+ 0.998 R² (0.995 R² .. 0.999 R²)+mean 22.37 ms (21.79 ms .. 23.07 ms)+std dev 1.423 ms (971.3 μs .. 1.764 ms)+variance introduced by outliers: 24% (moderately inflated) benchmarking main/large/superbuffer (init=800000 bytes, threadsafe, 2 concurrent writes)-time 22.56 ms (22.14 ms .. 22.95 ms)- 0.998 R² (0.995 R² .. 0.999 R²)-mean 22.95 ms (22.64 ms .. 23.74 ms)-std dev 1.085 ms (445.3 μs .. 1.948 ms)-variance introduced by outliers: 14% (moderately inflated)+time 26.87 ms (26.39 ms .. 27.40 ms)+ 0.998 R² (0.997 R² .. 0.999 R²)+mean 27.69 ms (27.16 ms .. 28.82 ms)+std dev 1.668 ms (796.8 μs .. 3.007 ms)+variance introduced by outliers: 21% (moderately inflated) benchmarking main/large/superbuffer (init=1600000 bytes, threadsafe, 2 concurrent writes)-time 22.05 ms (21.75 ms .. 22.50 ms)- 0.999 R² (0.997 R² .. 1.000 R²)-mean 22.77 ms (22.49 ms .. 23.59 ms)-std dev 1.020 ms (475.6 μs .. 1.879 ms)-variance introduced by outliers: 14% (moderately inflated)+time 21.94 ms (21.20 ms .. 22.83 ms)+ 0.993 R² (0.986 R² .. 0.997 R²)+mean 22.67 ms (22.10 ms .. 23.47 ms)+std dev 1.557 ms (927.2 μs .. 2.176 ms)+variance introduced by outliers: 29% (moderately inflated) benchmarking main/large/superbuffer (init=20000000 bytes, threadsafe, 2 concurrent writes)-time 31.35 ms (29.61 ms .. 33.21 ms)- 0.986 R² (0.971 R² .. 0.995 R²)-mean 28.83 ms (27.87 ms .. 29.78 ms)-std dev 2.072 ms (1.698 ms .. 2.550 ms)-variance introduced by outliers: 28% (moderately inflated)+time 15.28 ms (14.51 ms .. 16.07 ms)+ 0.985 R² (0.969 R² .. 0.994 R²)+mean 18.44 ms (17.30 ms .. 20.47 ms)+std dev 3.914 ms (2.383 ms .. 5.301 ms)+variance introduced by outliers: 82% (severely inflated) benchmarking main/large/buffer-builder (init=128 bytes, trim=yes)-time 27.56 ms (26.72 ms .. 28.08 ms)- 0.996 R² (0.991 R² .. 0.999 R²)-mean 29.61 ms (28.91 ms .. 30.31 ms)-std dev 1.490 ms (1.282 ms .. 1.830 ms)-variance introduced by outliers: 16% (moderately inflated)+time 27.25 ms (26.22 ms .. 28.09 ms)+ 0.995 R² (0.991 R² .. 0.998 R²)+mean 29.72 ms (28.85 ms .. 30.97 ms)+std dev 2.197 ms (1.692 ms .. 2.863 ms)+variance introduced by outliers: 27% (moderately inflated) benchmarking main/large/buffer-builder (init=400000 bytes, trim=yes)-time 27.73 ms (26.91 ms .. 28.30 ms)- 0.998 R² (0.995 R² .. 0.999 R²)-mean 27.06 ms (26.76 ms .. 27.36 ms)-std dev 675.1 μs (539.6 μs .. 851.8 μs)+time 24.62 ms (23.86 ms .. 25.37 ms)+ 0.995 R² (0.990 R² .. 0.998 R²)+mean 24.56 ms (24.11 ms .. 25.03 ms)+std dev 1.013 ms (806.5 μs .. 1.291 ms)+variance introduced by outliers: 15% (moderately inflated) benchmarking main/large/buffer-builder (init=800000 bytes, trim=yes)-time 27.74 ms (27.14 ms .. 28.16 ms)+time 24.85 ms (24.37 ms .. 25.24 ms) 0.999 R² (0.998 R² .. 1.000 R²)-mean 27.84 ms (27.57 ms .. 28.24 ms)-std dev 716.2 μs (406.4 μs .. 1.278 ms)+mean 24.37 ms (24.10 ms .. 24.59 ms)+std dev 550.3 μs (407.5 μs .. 728.3 μs) benchmarking main/large/buffer-builder (init=1600000 bytes, trim=yes)-time 27.90 ms (27.30 ms .. 28.26 ms)- 0.999 R² (0.998 R² .. 1.000 R²)-mean 27.30 ms (27.01 ms .. 27.57 ms)-std dev 607.3 μs (472.2 μs .. 805.3 μs)+time 24.18 ms (21.67 ms .. 25.98 ms)+ 0.978 R² (0.963 R² .. 0.993 R²)+mean 22.34 ms (21.77 ms .. 23.09 ms)+std dev 1.560 ms (1.157 ms .. 2.056 ms)+variance introduced by outliers: 29% (moderately inflated) benchmarking main/large/buffer-builder (init=20000000 bytes, trim=yes)-time 40.14 ms (38.86 ms .. 41.10 ms)- 0.998 R² (0.996 R² .. 1.000 R²)-mean 37.02 ms (33.52 ms .. 38.41 ms)-std dev 4.424 ms (1.138 ms .. 7.765 ms)-variance introduced by outliers: 45% (moderately inflated)+time 40.55 ms (38.93 ms .. 42.77 ms)+ 0.985 R² (0.965 R² .. 0.995 R²)+mean 33.52 ms (30.49 ms .. 36.43 ms)+std dev 5.750 ms (4.777 ms .. 6.724 ms)+variance introduced by outliers: 67% (severely inflated) benchmarking main/large/bytestring builder-time 23.00 ms (21.84 ms .. 24.15 ms)- 0.983 R² (0.960 R² .. 0.996 R²)-mean 24.99 ms (24.21 ms .. 26.16 ms)-std dev 2.223 ms (1.753 ms .. 3.120 ms)-variance introduced by outliers: 35% (moderately inflated)+time 20.71 ms (19.41 ms .. 21.67 ms)+ 0.987 R² (0.975 R² .. 0.994 R²)+mean 23.80 ms (22.91 ms .. 24.66 ms)+std dev 2.027 ms (1.762 ms .. 2.468 ms)+variance introduced by outliers: 38% (moderately inflated) benchmarking main/large/bytestring fromChunks-time 23.39 ms (22.78 ms .. 23.99 ms)+time 21.18 ms (20.72 ms .. 21.62 ms) 0.998 R² (0.995 R² .. 0.999 R²)-mean 23.98 ms (23.58 ms .. 25.05 ms)-std dev 1.402 ms (420.3 μs .. 2.618 ms)-variance introduced by outliers: 24% (moderately inflated)+mean 21.64 ms (21.28 ms .. 22.18 ms)+std dev 1.000 ms (589.7 μs .. 1.621 ms)+variance introduced by outliers: 18% (moderately inflated) benchmarking main/large/bytestring concat-time 29.05 ms (25.14 ms .. 32.45 ms)- 0.960 R² (0.941 R² .. 0.990 R²)-mean 24.90 ms (23.74 ms .. 26.50 ms)-std dev 2.998 ms (1.942 ms .. 3.934 ms)-variance introduced by outliers: 51% (severely inflated)+time 21.59 ms (20.97 ms .. 22.39 ms)+ 0.997 R² (0.993 R² .. 0.999 R²)+mean 21.80 ms (21.57 ms .. 22.11 ms)+std dev 600.9 μs (451.9 μs .. 767.7 μs) ```
cbits/superbuffer.c view
@@ -27,11 +27,11 @@ return; } const size_t nextSize = buf->currentSize + len;- while (nextSize > buf->maxSize) {- // reallocate more memory- buf->maxSize = buf->maxSize + (buf->maxSize >> 1);+ if (nextSize > buf->maxSize) {+ buf->maxSize = nextSize + (nextSize >> 1); buf->contents = (char *)realloc(buf->contents, buf->maxSize); }+ char *targetLocation = buf->contents + buf->currentSize; memcpy(targetLocation, value, len); buf->currentSize = nextSize;
package.yaml view
@@ -1,5 +1,5 @@ name: superbuffer-version: 0.2.0.0+version: 0.2.0.1 synopsis: Efficiently build a bytestring from smaller chunks description: Efficiently (both fast and memory efficient) build a bytestring from smaller chunks homepage: https://github.com/agrafix/superbuffer#readme
superbuffer.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: superbuffer-version: 0.2.0.0+version: 0.2.0.1 synopsis: Efficiently build a bytestring from smaller chunks description: Efficiently (both fast and memory efficient) build a bytestring from smaller chunks category: Web