|
147 | 147 | - Made to handle `tens-of-thousands` connections / sec
|
148 | 148 |
|
149 | 149 | ```console
|
150 |
| - # On Macbook Pro 2019 / 2.4 GHz 8-Core Intel Core i9 / 32 GB RAM |
151 |
| - ❯ ./helper/benchmark.sh |
152 |
| - CONCURRENCY: 100 workers, TOTAL REQUESTS: 100000 req |
153 |
| - |
| 150 | + # On Macbook Pro M2 2022 |
| 151 | + ❯ python --version |
| 152 | + Python 3.11.8 |
| 153 | + ❯ oha --version |
| 154 | + oha 1.4.3 |
| 155 | + ❯ ./benchmark/compare.sh |
| 156 | + CONCURRENCY: 100 workers, DURATION: 1m, TIMEOUT: 1sec |
| 157 | + ============================= |
| 158 | + Benchmarking Proxy.Py |
| 159 | + Server (pid:75969) running |
154 | 160 | Summary:
|
155 |
| - Success rate: 1.0000 |
156 |
| - Total: 2.5489 secs |
157 |
| - Slowest: 0.0443 secs |
158 |
| - Fastest: 0.0006 secs |
159 |
| - Average: 0.0025 secs |
160 |
| - Requests/sec: 39232.6572 |
| 161 | + Success rate: 100.00% |
| 162 | + Total: 60.0006 secs |
| 163 | + Slowest: 0.2525 secs |
| 164 | + Fastest: 0.0002 secs |
| 165 | + Average: 0.0019 secs |
| 166 | + Requests/sec: 51667.3774 |
161 | 167 |
|
162 |
| - Total data: 1.81 MiB |
163 |
| - Size/request: 19 B |
164 |
| - Size/sec: 727.95 KiB |
| 168 | + Total data: 56.17 MiB |
| 169 | + Size/request: 19 B |
| 170 | + Size/sec: 958.64 KiB |
165 | 171 |
|
166 | 172 | Response time histogram:
|
167 |
| - 0.001 [5006] |■■■■■ |
168 |
| - 0.001 [19740] |■■■■■■■■■■■■■■■■■■■■■ |
169 |
| - 0.002 [29701] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |
170 |
| - 0.002 [21278] |■■■■■■■■■■■■■■■■■■■■■■ |
171 |
| - 0.003 [15376] |■■■■■■■■■■■■■■■■ |
172 |
| - 0.004 [6644] |■■■■■■■ |
173 |
| - 0.004 [1609] |■ |
174 |
| - 0.005 [434] | |
175 |
| - 0.006 [83] | |
176 |
| - 0.006 [29] | |
177 |
| - 0.007 [100] | |
178 |
| - |
179 |
| - Latency distribution: |
180 |
| - 10% in 0.0014 secs |
181 |
| - 25% in 0.0018 secs |
182 |
| - 50% in 0.0023 secs |
183 |
| - 75% in 0.0030 secs |
184 |
| - 90% in 0.0036 secs |
185 |
| - 95% in 0.0040 secs |
186 |
| - 99% in 0.0047 secs |
| 173 | + 0.000 [1] | |
| 174 | + 0.025 [3073746] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |
| 175 | + 0.051 [10559] | |
| 176 | + 0.076 [4980] | |
| 177 | + 0.101 [2029] | |
| 178 | + 0.126 [5896] | |
| 179 | + 0.152 [2466] | |
| 180 | + 0.177 [116] | |
| 181 | + 0.202 [40] | |
| 182 | + 0.227 [52] | |
| 183 | + 0.253 [87] | |
| 184 | + |
| 185 | + Response time distribution: |
| 186 | + 10.00% in 0.0005 secs |
| 187 | + 25.00% in 0.0007 secs |
| 188 | + 50.00% in 0.0009 secs |
| 189 | + 75.00% in 0.0014 secs |
| 190 | + 90.00% in 0.0021 secs |
| 191 | + 95.00% in 0.0035 secs |
| 192 | + 99.00% in 0.0198 secs |
| 193 | + 99.90% in 0.1262 secs |
| 194 | + 99.99% in 0.1479 secs |
187 | 195 |
|
188 | 196 | Details (average, fastest, slowest):
|
189 |
| - DNS+dialup: 0.0025 secs, 0.0015 secs, 0.0030 secs |
190 |
| - DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0001 secs |
| 197 | + DNS+dialup: 0.0018 secs, 0.0004 secs, 0.0031 secs |
| 198 | + DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0002 secs |
191 | 199 |
|
192 | 200 | Status code distribution:
|
193 |
| - [200] 100000 responses |
| 201 | + [200] 3099972 responses |
| 202 | + |
| 203 | + Error distribution: |
| 204 | + [100] aborted due to deadline |
| 205 | + ============================= |
194 | 206 | ```
|
195 | 207 |
|
196 | 208 | Consult [Threads vs Threadless](#threads-vs-threadless) and [Threadless Remote vs Local Execution Mode](#threadless-remote-vs-local-execution-mode) to control number of CPU cores utilized.
|
@@ -2322,7 +2334,7 @@ See [Benchmark](https://github.com/abhinavsingh/proxy.py/tree/develop/benchmark)
|
2322 | 2334 | To run standalone benchmark for `proxy.py`, use the following command from repo root:
|
2323 | 2335 |
|
2324 | 2336 | ```console
|
2325 |
| -❯ ./helper/benchmark.sh |
| 2337 | +❯ ./benchmark/compare.sh |
2326 | 2338 | ```
|
2327 | 2339 |
|
2328 | 2340 | # Flags
|
|
0 commit comments