Performance comparison results
How once.to compares with similar services in terms of performance
We closely monitor the performance of once.to to provide our users with the best possible experience.
What we are particularly proud of is the unparallelled performance of our redirection engine, which is so thoroughly optimized that no other service can match our throughput figures.
Here are our latest measurements, including detailed reports1:
Service/Metric | once.to💪 | bit.ly | t.ly | polr.me | shorturl.at | bl.ink | Rebrandly |
---|---|---|---|---|---|---|---|
Throughput, requests/s | 1426 | 1051 | 35 | 43 | 207 | 88 | 968 |
Average single request duration, ms | 67.91 | 91.15 | 2810 | 2320 | 473.9 | 1080 | 99.68 |
Average request duration (in burst), ms | 0.701 | 0.951 | 28.571 | 23.328 | 4.828 | 11.302 | 1.033 |
Overall test duration, s | 28.0 | 38 | 210 | 210 | 207 | 452 | 41.3 |
Report | Report | Report | Report | Report | Report | Report |
Performance report: once.to
running (28.0s), 000/100 VUs, 200 complete and 0 interrupted iterations
default ✓ [======================================] 100 VUs 20s
checks.........................: 100.00% ✓ 40000 ✗ 0
data_received..................: 6.2 MB 220 kB/s
data_sent......................: 3.1 MB 111 kB/s
http_req_blocked...............: avg=441.32µs min=153ns med=475ns max=322.21ms p(90)=1.12µs p(95)=1.25µs
http_req_connecting............: avg=50.99µs min=0s med=0s max=23.66ms p(90)=0s p(95)=0s
http_req_duration..............: avg=67.91ms min=5.77ms med=55.9ms max=614.45ms p(90)=119.63ms p(95)=155.05ms
{ expected_response:true }...: avg=67.91ms min=5.77ms med=55.9ms max=614.45ms p(90)=119.63ms p(95)=155.05ms
http_req_failed................: 0.00% ✓ 0 ✗ 40000
http_req_receiving.............: avg=3.15ms min=23.13µs med=695.95µs max=96.55ms p(90)=9.08ms p(95)=14.11ms
http_req_sending...............: avg=42.47µs min=12.02µs med=34.96µs max=1.87ms p(90)=75.38µs p(95)=85.43µs
http_req_tls_handshaking.......: avg=368.64µs min=0s med=0s max=291.68ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=64.71ms min=5.68ms med=52.35ms max=614.35ms p(90)=114.54ms p(95)=151.3ms
http_reqs......................: 40000 1426.279418/s
iteration_duration.............: avg=13.7s min=12.25s med=13.69s max=15.78s p(90)=14.29s p(95)=14.51s
iterations.....................: 200 7.131397/s
vus............................: 2 min=2 max=100
vus_max........................: 100 min=100 max=100
Performance report: bit.ly
running (38.0s), 000/100 VUs, 200 complete and 0 interrupted iterations
default ✓ [======================================] 100 VUs 20s
data_received..............: 229 MB 6.0 MB/s
data_sent..................: 5.9 MB 154 kB/s
http_req_blocked...........: avg=150.51µs min=160ns med=644ns max=63.29ms p(90)=1.01µs p(95)=1.17µs
http_req_connecting........: avg=33.91µs min=0s med=0s max=20.54ms p(90)=0s p(95)=0s
http_req_duration..........: avg=91.15ms min=86.53ms med=89.64ms max=332.12ms p(90)=94.43ms p(95)=96.59ms
http_req_failed............: 100.00% ✓ 40000 ✗ 0
http_req_receiving.........: avg=1.18ms min=158.19µs med=799.54µs max=78.51ms p(90)=2.12ms p(95)=3.46ms
http_req_sending...........: avg=44.26µs min=8.03µs med=41.99µs max=1.14ms p(90)=64.26µs p(95)=73.57µs
http_req_tls_handshaking...: avg=101.56µs min=0s med=0s max=46.61ms p(90)=0s p(95)=0s
http_req_waiting...........: avg=89.91ms min=85.79ms med=88.58ms max=331.41ms p(90)=91.57ms p(95)=94.41ms
http_reqs..................: 40000 1051.35944/s
iteration_duration.........: avg=18.29s min=17.83s med=18.27s max=19.09s p(90)=18.6s p(95)=18.73s
iterations.................: 200 5.256797/s
vus........................: 1 min=1 max=100
vus_max....................: 100 min=100 max=100
Performance report: t.ly
running (3m30.0s), 000/100 VUs, 0 complete and 100 interrupted iterations
default ✓ [======================================] 100 VUs 3m0s
WARN[0210] No script iterations finished, consider making the test duration longer
data_received..................: 8.0 MB 38 kB/s
data_sent......................: 2.3 MB 11 kB/s
http_req_blocked...............: avg=794.55µs min=177ns med=878ns max=64.43ms p(90)=1.25µs p(95)=1.52µs
http_req_connecting............: avg=170.79µs min=0s med=0s max=21.8ms p(90)=0s p(95)=0s
http_req_duration..............: avg=2.81s min=1.73s med=2.79s max=5.89s p(90)=3.28s p(95)=3.44s
{ expected_response:true }...: avg=2.81s min=1.73s med=2.79s max=5.89s p(90)=3.28s p(95)=3.44s
http_req_failed................: 0.00% ✓ 0 ✗ 7412
http_req_receiving.............: avg=315.65µs min=42.45µs med=230.44µs max=26.92ms p(90)=318.16µs p(95)=405.67µs
http_req_sending...............: avg=84.14µs min=18.87µs med=87.5µs max=504.51µs p(90)=114.73µs p(95)=126.3µs
http_req_tls_handshaking.......: avg=576.14µs min=0s med=0s max=48.16ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=2.81s min=1.73s med=2.79s max=5.89s p(90)=3.28s p(95)=3.44s
http_reqs......................: 7412 35.293169/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance report: polr.me
running (3m30.0s), 000/100 VUs, 0 complete and 100 interrupted iterations
default ✓ [======================================] 100 VUs 3m0s
WARN[0210] No script iterations finished, consider making the test duration longer
data_received..................: 18 MB 88 kB/s
data_sent......................: 7.1 MB 34 kB/s
http_req_blocked...............: avg=281.2µs min=1.05µs med=6.2µs max=34.66ms p(90)=9.11µs p(95)=10.7µs
http_req_connecting............: avg=147.19µs min=0s med=0s max=22.63ms p(90)=0s p(95)=0s
http_req_duration..............: avg=2.32s min=759.83ms med=2.25s max=9.17s p(90)=2.64s p(95)=2.78s
{ expected_response:true }...: avg=2.32s min=759.83ms med=2.25s max=9.17s p(90)=2.64s p(95)=2.78s
http_req_failed................: 0.00% ✓ 0 ✗ 9003
http_req_receiving.............: avg=5.04ms min=22.73µs med=143.38µs max=587.63ms p(90)=204.46µs p(95)=239.92µs
http_req_sending...............: avg=41.19µs min=5.83µs med=42.66µs max=1.08ms p(90)=57.37µs p(95)=64.48µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=2.31s min=759.63ms med=2.25s max=9.17s p(90)=2.63s p(95)=2.76s
http_reqs......................: 9003 42.867579/s
vus............................: 59 min=59 max=100
vus_max........................: 100 min=100 max=100
Performance report: shorturl.at
running (3m30.0s), 000/100 VUs, 156 complete and 73 interrupted iterations
default ✓ [======================================] 100 VUs 3m0s
checks.........................: 100.00% ✓ 43496 ✗ 0
data_received..................: 26 MB 126 kB/s
data_sent......................: 3.2 MB 15 kB/s
http_req_blocked...............: avg=149.37µs min=146ns med=797ns max=68ms p(90)=1.03µs p(95)=1.26µs
http_req_connecting............: avg=29.63µs min=0s med=0s max=20.17ms p(90)=0s p(95)=0s
http_req_duration..............: avg=473.87ms min=93.57ms med=110.29ms max=5.46s p(90)=1.11s p(95)=2.1s
{ expected_response:true }...: avg=473.87ms min=93.57ms med=110.29ms max=5.46s p(90)=1.11s p(95)=2.1s
http_req_failed................: 0.00% ✓ 0 ✗ 43496
http_req_receiving.............: avg=172.3µs min=30.8µs med=171.62µs max=21.46ms p(90)=233.13µs p(95)=254.74µs
http_req_sending...............: avg=61.53µs min=13.22µs med=66.42µs max=1.03ms p(90)=85.26µs p(95)=93.95µs
http_req_tls_handshaking.......: avg=117.77µs min=0s med=0s max=58.12ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=473.64ms min=93.5ms med=110.05ms max=5.46s p(90)=1.11s p(95)=2.1s
http_reqs......................: 43496 207.122262/s
iteration_duration.............: avg=1m38s min=30.81s med=1m56s max=2m13s p(90)=2m7s p(95)=2m8s
iterations.....................: 156 0.742852/s
vus............................: 73 min=73 max=100
vus_max........................: 100 min=100 max=100
Performance report: bl.ink
running (07m32.1s), 000/100 VUs, 200 complete and 0 interrupted iterations
default ✓ [======================================] 100 VUs 07m32.1s/10m0s 200/200 shared iters
checks.........................: 100.00% ✓ 40000 ✗ 0
data_received..................: 21 MB 47 kB/s
data_sent......................: 8.7 MB 19 kB/s
http_req_blocked...............: avg=3.11ms min=993ns med=5.19µs max=359.26ms p(90)=6.75µs p(95)=7.7µs
http_req_connecting............: avg=1ms min=0s med=0s max=112ms p(90)=0s p(95)=0s
✗ http_req_duration..............: avg=1.08s min=220.55ms med=693.2ms max=24.03s p(90)=2.43s p(95)=2.93s
{ expected_response:true }...: avg=1.08s min=220.55ms med=693.2ms max=24.03s p(90)=2.43s p(95)=2.93s
✓ http_req_failed................: 0.00% ✓ 0 ✗ 40000
http_req_receiving.............: avg=95.6µs min=20.79µs med=95.35µs max=1.08ms p(90)=123.61µs p(95)=137.33µs
http_req_sending...............: avg=33.59µs min=5.06µs med=34.03µs max=945.24µs p(90)=41.15µs p(95)=45.72µs
http_req_tls_handshaking.......: avg=2.09ms min=0s med=0s max=242.51ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=1.08s min=220.43ms med=693.08ms max=24.03s p(90)=2.43s p(95)=2.93s
http_reqs......................: 40000 88.477231/s
iteration_duration.............: avg=3m37s min=2m58s med=3m38s max=4m22s p(90)=3m52s p(95)=3m56s
iterations.....................: 200 0.442386/s
vus............................: 1 min=1 max=100
vus_max........................: 100 min=100 max=100
Performance report: Rebrandly (rb.gy)
running (00m41.3s), 000/100 VUs, 200 complete and 0 interrupted iterations
default ✓ [======================================] 100 VUs 00m41.3s/10m0s 200/200 shared iters
checks.........................: 100.00% ✓ 40000 ✗ 0
data_received..................: 11 MB 260 kB/s
data_sent......................: 6.6 MB 159 kB/s
http_req_blocked...............: avg=863.04µs min=799ns med=4.17µs max=512.65ms p(90)=5.84µs p(95)=6.45µs
http_req_connecting............: avg=33.31µs min=0s med=0s max=21.86ms p(90)=0s p(95)=0s
✓ http_req_duration..............: avg=99.68ms min=92.75ms med=98.93ms max=399.87ms p(90)=100.82ms p(95)=101.8ms
{ expected_response:true }...: avg=99.68ms min=92.75ms med=98.93ms max=399.87ms p(90)=100.82ms p(95)=101.8ms
✓ http_req_failed................: 0.00% ✓ 0 ✗ 40000
http_req_receiving.............: avg=62.18µs min=13.18µs med=64.54µs max=1.47ms p(90)=82.57µs p(95)=91.18µs
http_req_sending...............: avg=23.56µs min=4.03µs med=24.3µs max=651.17µs p(90)=33.51µs p(95)=36.72µs
http_req_tls_handshaking.......: avg=782.82µs min=0s med=0s max=487.8ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=99.59ms min=92.65ms med=98.84ms max=399.77ms p(90)=100.73ms p(95)=101.7ms
http_reqs......................: 40000 968.128235/s
iteration_duration.............: avg=20.14s min=19.72s med=20.15s max=21.19s p(90)=20.47s p(95)=20.74s
iterations.....................: 200 4.840641/s
vus............................: 4 min=4 max=100
vus_max........................: 100 min=100 max=100
Graphs
Below you can see the two most important performance metrics plotted on a chart:
Why is that important?
As you might have heard, search engines tend to punish sluggish websites by lowering them in their search results. And rightly so: according to stats by Google, about a half (!) of visits get abandoned if a website takes longer than three seconds to open:
So, are you still considering using t.ly
, which takes 2.81 s on average only to redirect to your website?
Sampled on 40K HTTPS requests to two different URLs, emulating up to 100 simultaneous users. t.ly and polr.me could not complete all the 40K requests in the test within the time limit of 210 seconds. ↩︎
Tags: bit.ly, bl.ink, link shortener, once.to, performance, polr.me, rb.gy, Rebrandly, redirection engine, report, shorturl.at, speed, t.ly, URL shortener