mirror of
https://github.com/imgproxy/imgproxy.git
synced 2024-11-18 16:31:44 +02:00
Replace old benchmark results with a link to the blog article with new results
This commit is contained in:
parent
e31b24931d
commit
40aaf353ac
280
BENCHMARK.md
280
BENCHMARK.md
@ -1,281 +1,3 @@
|
||||
# imgproxy vs alternatives benchmark
|
||||
|
||||
## Setup
|
||||
|
||||
- c5.xlarge AWS instance: 4 CPUs, 8 GB RAM
|
||||
- Ubuntu 18.04
|
||||
- Go 1.12
|
||||
- Python 2.7
|
||||
- Vips 8.7.4
|
||||
|
||||
All the tools were launched with their default settings except the following (where applicable):
|
||||
|
||||
- Concurrency was set to 8;
|
||||
- Filesystem image source was configured. Where not applicable, local nginx was used as the image source.
|
||||
|
||||
## Benchmarking
|
||||
|
||||
We used [Apache HTTP server benchmarking tool](https://httpd.apache.org/docs/2.4/programs/ab.html) (a.k.a `ab`):
|
||||
|
||||
```bash
|
||||
ab -n 1000 -c 4 $url
|
||||
```
|
||||
|
||||
The source image is a [photo of Wat Arun](https://upload.wikimedia.org/wikipedia/commons/b/b7/The_sculptures_of_two_mythical_giant_demons%2C_Thotsakan_and_Sahatsadecha%2C_guarding_the_eastern_gate_of_the_main_chapel_of_Wat_Arun%2C_Bangkok.jpg) (JPEG, 7360x4912, 29MB).
|
||||
|
||||
The tools were requested to resize it to fit 500x500.
|
||||
|
||||
## Tested tools
|
||||
|
||||
- [imgproxy](https://github.com/imgproxy/imgproxy) itself, v2.2.13
|
||||
|
||||
URL: `/unsigned/rs:fit:500:0/plain/local:///wat-arun.jpg`
|
||||
|
||||
- [thumbor](https://github.com/thumbor/thumbor), v6.7.0
|
||||
|
||||
URL: `/unsafe/500x0/wat-arun.jpg`
|
||||
|
||||
- [imaginary](https://github.com/h2non/imaginary), master branch ([519c5ff](https://github.com/h2non/imaginary/tree/519c5ffc2c0b1bbae1b100a24acb2241474f11bd))
|
||||
|
||||
URL: `/fit?width=500&height=500&file=wat-arun.jpg`
|
||||
|
||||
- [Pilbox](https://github.com/agschwender/pilbox), v1.3.4
|
||||
|
||||
URL: `/?url=http%3A%2F%2Fimages.dev.com%2Fwat-arun.jpg&w=500&h=500&mode=clip`
|
||||
|
||||
- [picfit](https://github.com/thoas/picfit), master branch ([fff7d2e](https://github.com/thoas/picfit/tree/fff7d2e83d23b1c716fed484bb5d0775a49c9a71))
|
||||
|
||||
URL: `/display/resize/500x0/wat-arun.jpg`
|
||||
|
||||
- [imageproxy](https://github.com/willnorris/imageproxy), master branch ([d4246a0](https://github.com/willnorris/imageproxy/tree/d4246a08fdec341ddf01b09e74e56ee03f9929d0))
|
||||
|
||||
URL: `/500x/http://images.dev.com/wat-arun.jpg`
|
||||
|
||||
## Results
|
||||
|
||||
| Tool | Time taken for tests<br>(sec) | Requests per second | Time per request<br>(ms, mean) | Memory peak usage<br>(MB) | Result file size<br>(KB) |
|
||||
| :------------ | -------------------------: | ------------------: | ---------------------------: | ---------------------: | --------------------: |
|
||||
| imgproxy | 103.405 | 9.67 | 413.618 | 194 | 43.51 |
|
||||
| thumbor | 160.505 | 6.23 | 642.021 | 461 | 45.10 |
|
||||
| imaginary | 104.873 | 9.54 | 419.494 | 562 | 92.93 |
|
||||
| Pilbox | 179.482 | 5.57 | 717.927 | 1060 | 95.64 |
|
||||
| picfit | 1220.412 | 0.82 | 4881.646 | 1934 | 98.67 |
|
||||
| imageproxy | 1209.361 | 0.83 | 4837.443 | 2392 | 98.74 |
|
||||
|
||||
## Detailed results
|
||||
|
||||
### imgproxy
|
||||
|
||||
```
|
||||
Concurrency Level: 4
|
||||
Time taken for tests: 103.405 seconds
|
||||
Complete requests: 1000
|
||||
Failed requests: 0
|
||||
Total transferred: 44855000 bytes
|
||||
HTML transferred: 44559000 bytes
|
||||
Requests per second: 9.67 [#/sec] (mean)
|
||||
Time per request: 413.618 [ms] (mean)
|
||||
Time per request: 103.405 [ms] (mean, across all concurrent requests)
|
||||
Transfer rate: 423.61 [Kbytes/sec] received
|
||||
|
||||
Connection Times (ms)
|
||||
min mean[+/-sd] median max
|
||||
Connect: 0 0 0.0 0 0
|
||||
Processing: 323 413 5.6 413 446
|
||||
Waiting: 323 413 5.6 412 446
|
||||
Total: 323 413 5.6 413 446
|
||||
|
||||
Percentage of the requests served within a certain time (ms)
|
||||
50% 413
|
||||
66% 414
|
||||
75% 416
|
||||
80% 417
|
||||
90% 419
|
||||
95% 422
|
||||
98% 426
|
||||
99% 429
|
||||
100% 446 (longest request)
|
||||
|
||||
Memory peak usage: 194 [MB]
|
||||
Result file size: 43.51 [KB]
|
||||
```
|
||||
|
||||
### thumbor
|
||||
|
||||
```
|
||||
Concurrency Level: 4
|
||||
Time taken for tests: 160.505 seconds
|
||||
Complete requests: 1000
|
||||
Failed requests: 0
|
||||
Total transferred: 46435000 bytes
|
||||
HTML transferred: 46180000 bytes
|
||||
Requests per second: 6.23 [#/sec] (mean)
|
||||
Time per request: 642.021 [ms] (mean)
|
||||
Time per request: 160.505 [ms] (mean, across all concurrent requests)
|
||||
Transfer rate: 282.52 [Kbytes/sec] received
|
||||
|
||||
Connection Times (ms)
|
||||
min mean[+/-sd] median max
|
||||
Connect: 0 0 0.0 0 0
|
||||
Processing: 586 642 12.3 641 886
|
||||
Waiting: 586 641 12.3 641 886
|
||||
Total: 586 642 12.3 641 886
|
||||
|
||||
Percentage of the requests served within a certain time (ms)
|
||||
50% 641
|
||||
66% 644
|
||||
75% 646
|
||||
80% 647
|
||||
90% 650
|
||||
95% 652
|
||||
98% 657
|
||||
99% 658
|
||||
100% 886 (longest request)
|
||||
|
||||
Memory peak usage: 461 [MB]
|
||||
Result file size: 45.10 [KB]
|
||||
```
|
||||
|
||||
### imaginary
|
||||
|
||||
```
|
||||
Concurrency Level: 4
|
||||
Time taken for tests: 104.873 seconds
|
||||
Complete requests: 1000
|
||||
Failed requests: 0
|
||||
Total transferred: 95389568 bytes
|
||||
HTML transferred: 95166000 bytes
|
||||
Requests per second: 9.54 [#/sec] (mean)
|
||||
Time per request: 419.494 [ms] (mean)
|
||||
Time per request: 104.873 [ms] (mean, across all concurrent requests)
|
||||
Transfer rate: 888.25 [Kbytes/sec] received
|
||||
|
||||
Connection Times (ms)
|
||||
min mean[+/-sd] median max
|
||||
Connect: 0 0 0.0 0 0
|
||||
Processing: 310 419 6.4 418 459
|
||||
Waiting: 310 418 6.4 418 459
|
||||
Total: 310 419 6.4 418 460
|
||||
|
||||
Percentage of the requests served within a certain time (ms)
|
||||
50% 418
|
||||
66% 420
|
||||
75% 421
|
||||
80% 422
|
||||
90% 425
|
||||
95% 428
|
||||
98% 432
|
||||
99% 437
|
||||
100% 460 (longest request)
|
||||
|
||||
Memory peak usage: 562 [MB]
|
||||
Result file size: 92.93 [KB]
|
||||
```
|
||||
|
||||
### Pilbox
|
||||
|
||||
```
|
||||
Concurrency Level: 4
|
||||
Time taken for tests: 179.482 seconds
|
||||
Complete requests: 1000
|
||||
Failed requests: 0
|
||||
Total transferred: 98164000 bytes
|
||||
HTML transferred: 97934000 bytes
|
||||
Requests per second: 5.57 [#/sec] (mean)
|
||||
Time per request: 717.927 [ms] (mean)
|
||||
Time per request: 179.482 [ms] (mean, across all concurrent requests)
|
||||
Transfer rate: 534.11 [Kbytes/sec] received
|
||||
|
||||
Connection Times (ms)
|
||||
min mean[+/-sd] median max
|
||||
Connect: 0 0 0.0 0 1
|
||||
Processing: 456 717 232.5 658 1851
|
||||
Waiting: 456 717 232.5 657 1851
|
||||
Total: 457 717 232.5 658 1851
|
||||
|
||||
Percentage of the requests served within a certain time (ms)
|
||||
50% 658
|
||||
66% 663
|
||||
75% 668
|
||||
80% 674
|
||||
90% 1176
|
||||
95% 1278
|
||||
98% 1340
|
||||
99% 1618
|
||||
100% 1851 (longest request)
|
||||
|
||||
Memory peak usage: 1060 [MB]
|
||||
Result file size: 95.64 [KB]
|
||||
```
|
||||
|
||||
### picfit
|
||||
|
||||
```
|
||||
Concurrency Level: 4
|
||||
Time taken for tests: 1220.412 seconds
|
||||
Complete requests: 1000
|
||||
Failed requests: 0
|
||||
Total transferred: 101206000 bytes
|
||||
HTML transferred: 101038000 bytes
|
||||
Requests per second: 0.82 [#/sec] (mean)
|
||||
Time per request: 4881.646 [ms] (mean)
|
||||
Time per request: 1220.412 [ms] (mean, across all concurrent requests)
|
||||
Transfer rate: 80.98 [Kbytes/sec] received
|
||||
|
||||
Connection Times (ms)
|
||||
min mean[+/-sd] median max
|
||||
Connect: 0 0 0.0 0 0
|
||||
Processing: 2322 4875 118.6 4880 5265
|
||||
Waiting: 2322 4874 118.6 4879 5265
|
||||
Total: 2322 4875 118.6 4880 5265
|
||||
|
||||
Percentage of the requests served within a certain time (ms)
|
||||
50% 4880
|
||||
66% 4906
|
||||
75% 4924
|
||||
80% 4936
|
||||
90% 4978
|
||||
95% 5009
|
||||
98% 5078
|
||||
99% 5124
|
||||
100% 5265 (longest request)
|
||||
|
||||
Memory peak usage: 1934 [MB]
|
||||
Result file size: 98.67 [KB]
|
||||
```
|
||||
|
||||
### imageproxy
|
||||
|
||||
```
|
||||
Concurrency Level: 4
|
||||
Time taken for tests: 1209.361 seconds
|
||||
Complete requests: 1000
|
||||
Failed requests: 0
|
||||
Total transferred: 101318000 bytes
|
||||
HTML transferred: 101108000 bytes
|
||||
Requests per second: 0.83 [#/sec] (mean)
|
||||
Time per request: 4837.443 [ms] (mean)
|
||||
Time per request: 1209.361 [ms] (mean, across all concurrent requests)
|
||||
Transfer rate: 81.81 [Kbytes/sec] received
|
||||
|
||||
Connection Times (ms)
|
||||
min mean[+/-sd] median max
|
||||
Connect: 0 0 0.0 0 0
|
||||
Processing: 4520 4837 74.9 4838 5090
|
||||
Waiting: 4520 4836 74.7 4837 5086
|
||||
Total: 4520 4837 74.9 4838 5090
|
||||
|
||||
Percentage of the requests served within a certain time (ms)
|
||||
50% 4838
|
||||
66% 4865
|
||||
75% 4884
|
||||
80% 4895
|
||||
90% 4931
|
||||
95% 4960
|
||||
98% 4993
|
||||
99% 5026
|
||||
100% 5090 (longest request)
|
||||
|
||||
Memory peak usage: 2392 [MB]
|
||||
Result file size: 98.74 [KB]
|
||||
```
|
||||
You can find the results of the new benchmark in [the blog article](https://imgproxy.net/blog/image-processing-servers-benchmark/).
|
||||
|
@ -48,7 +48,7 @@ imgproxy takes advantage of probably the most efficient image processing library
|
||||
|
||||
imgproxy uses Go’s raw (no wrappers) native `net/http` package to omit any overhead while processing requests and provides the best possible HTTP support.
|
||||
|
||||
You can take a look at some benchmarking results and compare imgproxy with some well-known alternatives in our [benchmark report](https://github.com/imgproxy/imgproxy/blob/master/BENCHMARK.md).
|
||||
You can take a look at some benchmarking results and compare imgproxy with some well-known alternatives in our [benchmark report](https://imgproxy.net/blog/image-processing-servers-benchmark/).
|
||||
|
||||
#### Security
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user