{"id":16366595,"url":"https://github.com/centminmod/curltimes","last_synced_at":"2025-03-23T02:32:36.421Z","repository":{"id":80279753,"uuid":"284049896","full_name":"centminmod/curltimes","owner":"centminmod","description":"curl based TLS connection measurement tool for testing and comparing TLSv1.2 vs TLSv1.3 connections","archived":false,"fork":false,"pushed_at":"2021-09-17T19:36:04.000Z","size":131,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-01T20:45:06.745Z","etag":null,"topics":["curl","http2","http3","https","ssl","tls","tls12","tls13"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/centminmod.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-31T14:02:27.000Z","updated_at":"2024-10-07T03:52:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"50c955b1-35f0-48ca-9e99-3ed0261eda74","html_url":"https://github.com/centminmod/curltimes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcurltimes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcurltimes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcurltimes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcurltimes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/centminmod","download_url":"https://codeload.github.com/centminmod/curltimes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244262552,"owners_count":20425158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curl","http2","http3","https","ssl","tls","tls12","tls13"],"created_at":"2024-10-11T02:46:59.828Z","updated_at":"2025-03-23T02:32:36.402Z","avatar_url":"https://github.com/centminmod.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# curltimes.sh\n\ncurl measurement tool for HTTPS connection times using shell script modified from https://nooshu.github.io/blog/2020/07/30/measuring-tls-13-ipv4-ipv6-performance/\n\n* [Usage](https://github.com/centminmod/curltimes#usage)\n* [Examples](https://github.com/centminmod/curltimes#examples)\n* [Process Metrics](https://github.com/centminmod/curltimes#process-metrics)\n* [TLS 1.2 vs TLS 1.3 diff compare](https://github.com/centminmod/curltimes#tls-12-vs-tls-13-for-11-run-diff-compare)\n* [curl HTTP/3 support](https://github.com/centminmod/curltimes#curl-http3-support)\n* [Compare curl HTTP/3 over QUIC vs HTTP/2 over TLSv1.3](https://github.com/centminmod/curltimes#compare-curl-http3-over-quic-vs-http2-over-tlsv13)\n* [Compare Mode](https://github.com/centminmod/curltimes#compare-mode)\n* [curl resolve mode](https://github.com/centminmod/curltimes#curl-resolve-mode)\n* [Environment Variables](https://github.com/centminmod/curltimes#environment-variables)\n\n# Usage\n\n```\n./curltimes.sh  \nUsage:\n\nTLS 1.2 max tests\n./curltimes.sh json https://domain.com\n./curltimes.sh csv https://domain.com\n\nTLS 1.3 max tests\n./curltimes.sh json-max https://domain.com\n./curltimes.sh csv-max https://domain.com\n\nCSV Summary\n./curltimes.sh csv-sum https://domain.com\n./curltimes.sh csv-max-sum https://domain.com\n\nTLSv1.2 vs TLSv1.3 Compare\n./curltimes.sh compare https://domain.com\n```\n\n# Examples\n\njson output with TLS 1.2 max\n\n```\n./curltimes.sh json https://servermanager.guide\ncurl 7.72.0-DEV\nTLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\nDNS,Connect,SSL,Wait,TTFB,Total Time\n{\n        \"time_dns\":             0.015699,\n        \"time_connect\":         0.024545,\n        \"time_appconnect\":      0.062394,\n        \"time_pretransfer\":     0.062475,\n        \"time_ttfb\":            0.094291,\n        \"time_total\":           0.103574\n}{\n        \"time_dns\":             0.002299,\n        \"time_connect\":         0.013313,\n        \"time_appconnect\":      0.045032,\n        \"time_pretransfer\":     0.045112,\n        \"time_ttfb\":            0.069348,\n        \"time_total\":           0.080474\n}{\n        \"time_dns\":             0.017739,\n        \"time_connect\":         0.026433,\n        \"time_appconnect\":      0.053973,\n        \"time_pretransfer\":     0.054058,\n        \"time_ttfb\":            0.083686,\n        \"time_total\":           0.093763\n}\n```\n\njson output with TLS 1.3 max\n\n```\n./curltimes.sh json-max https://servermanager.guide\ncurl 7.72.0-DEV\nTLSv1.3 TLS_AES_128_GCM_SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::6816:42fa) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\nDNS,Connect,SSL,Wait,TTFB,Total Time\n{\n        \"time_dns\":             0.002447,\n        \"time_connect\":         0.011198,\n        \"time_appconnect\":      0.027511,\n        \"time_pretransfer\":     0.027593,\n        \"time_ttfb\":            0.064391,\n        \"time_total\":           0.073440\n}{\n        \"time_dns\":             0.002405,\n        \"time_connect\":         0.013513,\n        \"time_appconnect\":      0.033980,\n        \"time_pretransfer\":     0.034065,\n        \"time_ttfb\":            0.073271,\n        \"time_total\":           0.084364\n}{\n        \"time_dns\":             0.002346,\n        \"time_connect\":         0.011054,\n        \"time_appconnect\":      0.030559,\n        \"time_pretransfer\":     0.030656,\n        \"time_ttfb\":            0.084737,\n        \"time_total\":           0.093304\n}\n```\n\ncsv output with TLS 1.2 max\n\n```\n./curltimes.sh csv https://servermanager.guide\ncurl 7.72.0-DEV\nTLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\nDNS,Connect,SSL,Wait,TTFB,Total Time\n0.002464,0.013496,0.045009,0.045091,0.078059,0.089155\n0.002349,0.010987,0.038559,0.038653,0.080786,0.089689\n0.002411,0.013445,0.044758,0.04484,0.07613,0.087181\n```\n\ncsv output with TLS 1.3 max\n\n```\n./curltimes.sh csv-max https://servermanager.guide\ncurl 7.72.0-DEV\nTLSv1.3 TLS_AES_128_GCM_SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\nDNS,Connect,SSL,Wait,TTFB,Total Time\n0.002368,0.011004,0.032605,0.032687,0.069083,0.078063\n0.002417,0.011137,0.029379,0.029465,0.071944,0.081752\n0.002351,0.013413,0.034949,0.03503,0.073061,0.084205\n```\n\n# process metrics\n\nUsing datamash to provide summary metrics for all recorded data points\n\ncsv-sum output with TLS 1.2 max\n\n```\n./curltimes.sh csv-sum https://servermanager.guide\ncurl 7.72.0-DEV\nTLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::6816:42fa) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\n0.015257,0.023983,0.049285,0.049374,0.071656,0.080435\n0.002349,0.01104,0.036542,0.036626,0.062205,0.07452\n0.002402,0.011086,0.037044,0.037124,0.0672,0.078116\n\ntime_dns \n  avg:    0.006669 \n  median: 0.002402 \n  min:    0.002349 \n  max:    0.015257 \n  75%:    0.008830 \n  95%:    0.013972 \n  99%:    0.015000\ntime_connect \n  avg:    0.015370 \n  median: 0.011086 \n  min:    0.011040 \n  max:    0.023983 \n  75%:    0.017535 \n  95%:    0.022693 \n  99%:    0.023725\ntime_appconnect \n  avg:    0.040957 \n  median: 0.037044 \n  min:    0.036542 \n  max:    0.049285 \n  75%:    0.043165 \n  95%:    0.048061 \n  99%:    0.049040\ntime_pretransfer \n  avg:    0.041041 \n  median: 0.037124 \n  min:    0.036626 \n  max:    0.049374 \n  75%:    0.043249 \n  95%:    0.048149 \n  99%:    0.049129\ntime_ttfb \n  avg:    0.067020 \n  median: 0.067200 \n  min:    0.062205 \n  max:    0.071656 \n  75%:    0.069428 \n  95%:    0.071210 \n  99%:    0.071567\ntime_total \n  avg:    0.077690 \n  median: 0.078116 \n  min:    0.074520 \n  max:    0.080435 \n  75%:    0.079275 \n  95%:    0.080203 \n  99%:    0.080389\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.006669,0.002402,0.002349,0.015257,0.008830,0.013972,0.015000\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.015370,0.011086,0.011040,0.023983,0.017535,0.022693,0.023725\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.040957,0.037044,0.036542,0.049285,0.043165,0.048061,0.049040\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.041041,0.037124,0.036626,0.049374,0.043249,0.048149,0.049129\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.067020,0.067200,0.062205,0.071656,0.069428,0.071210,0.071567\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.077690,0.078116,0.074520,0.080435,0.079275,0.080203,0.080389\n```\n\ncsv-max-sum output with TLS 1.3 max\n\n```\n./curltimes.sh csv-max-sum https://servermanager.guide\ncurl 7.72.0-DEV\nTLSv1.3 TLS_AES_128_GCM_SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::6816:43fa) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\n0.002545,0.011174,0.029505,0.029594,0.055961,0.06396\n0.002442,0.01114,0.036338,0.036424,0.068599,0.077132\n0.002426,0.011046,0.027465,0.027547,0.060354,0.067771\n\ntime_dns \n  avg:    0.002471 \n  median: 0.002442 \n  min:    0.002426 \n  max:    0.002545 \n  75%:    0.002493 \n  95%:    0.002535 \n  99%:    0.002543\ntime_connect \n  avg:    0.011120 \n  median: 0.011140 \n  min:    0.011046 \n  max:    0.011174 \n  75%:    0.011157 \n  95%:    0.011171 \n  99%:    0.011173\ntime_appconnect \n  avg:    0.031103 \n  median: 0.029505 \n  min:    0.027465 \n  max:    0.036338 \n  75%:    0.032921 \n  95%:    0.035655 \n  99%:    0.036201\ntime_pretransfer \n  avg:    0.031188 \n  median: 0.029594 \n  min:    0.027547 \n  max:    0.036424 \n  75%:    0.033009 \n  95%:    0.035741 \n  99%:    0.036287\ntime_ttfb \n  avg:    0.061638 \n  median: 0.060354 \n  min:    0.055961 \n  max:    0.068599 \n  75%:    0.064476 \n  95%:    0.067775 \n  99%:    0.068434\ntime_total \n  avg:    0.069621 \n  median: 0.067771 \n  min:    0.063960 \n  max:    0.077132 \n  75%:    0.072451 \n  95%:    0.076196 \n  99%:    0.076945\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.002471,0.002442,0.002426,0.002545,0.002493,0.002535,0.002543\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.011120,0.011140,0.011046,0.011174,0.011157,0.011171,0.011173\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.031103,0.029505,0.027465,0.036338,0.032921,0.035655,0.036201\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.031188,0.029594,0.027547,0.036424,0.033009,0.035741,0.036287\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.061638,0.060354,0.055961,0.068599,0.064476,0.067775,0.068434\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.069621,0.067771,0.063960,0.077132,0.072451,0.076196,0.076945\n```\n\n## TLS 1.2 vs TLS 1.3 diff compare\n\n```\ndomain=servermanager.guide\ntime diff -u \u003c(./curltimes.sh csv-sum https://$domain) \u003c(./curltimes.sh csv-max-sum https://$domain)\n```\n\n```\ndomain=servermanager.guide\ntime diff -u \u003c(./curltimes.sh csv-sum https://$domain) \u003c(./curltimes.sh csv-max-sum https://$domain)\n--- /dev/fd/63  2020-08-03 11:40:44.747487856 +0000\n+++ /dev/fd/62  2020-08-03 11:40:44.747487856 +0000\n@@ -1,77 +1,77 @@\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (2606:4700:10::6816:43fa) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 3\n \n-0.002346,0.01103,0.035427,0.035503,0.060286,0.069271\n-0.002479,0.011148,0.037028,0.0371,0.079237,0.088524\n-0.002359,0.010994,0.03724,0.037317,0.068266,0.085086\n+0.002381,0.011015,0.031037,0.031123,0.054617,0.063293\n+0.002451,0.011154,0.030285,0.030374,0.058021,0.066109\n+0.002392,0.011041,0.027912,0.027996,0.05965,0.067558\n \n time_dns \n-  avg:    0.002395 \n-  median: 0.002359 \n-  min:    0.002346 \n-  max:    0.002479 \n-  75%:    0.002419 \n-  95%:    0.002467 \n-  99%:    0.002477\n+  avg:    0.002408 \n+  median: 0.002392 \n+  min:    0.002381 \n+  max:    0.002451 \n+  75%:    0.002422 \n+  95%:    0.002445 \n+  99%:    0.002450\n time_connect \n-  avg:    0.011057 \n-  median: 0.011030 \n-  min:    0.010994 \n-  max:    0.011148 \n-  75%:    0.011089 \n-  95%:    0.011136 \n-  99%:    0.011146\n+  avg:    0.011070 \n+  median: 0.011041 \n+  min:    0.011015 \n+  max:    0.011154 \n+  75%:    0.011098 \n+  95%:    0.011143 \n+  99%:    0.011152\n time_appconnect \n-  avg:    0.036565 \n-  median: 0.037028 \n-  min:    0.035427 \n-  max:    0.037240 \n-  75%:    0.037134 \n-  95%:    0.037219 \n-  99%:    0.037236\n+  avg:    0.029745 \n+  median: 0.030285 \n+  min:    0.027912 \n+  max:    0.031037 \n+  75%:    0.030661 \n+  95%:    0.030962 \n+  99%:    0.031022\n time_pretransfer \n-  avg:    0.036640 \n-  median: 0.037100 \n-  min:    0.035503 \n-  max:    0.037317 \n-  75%:    0.037209 \n-  95%:    0.037295 \n-  99%:    0.037313\n+  avg:    0.029831 \n+  median: 0.030374 \n+  min:    0.027996 \n+  max:    0.031123 \n+  75%:    0.030749 \n+  95%:    0.031048 \n+  99%:    0.031108\n time_ttfb \n-  avg:    0.069263 \n-  median: 0.068266 \n-  min:    0.060286 \n-  max:    0.079237 \n-  75%:    0.073751 \n-  95%:    0.078140 \n-  99%:    0.079018\n+  avg:    0.057429 \n+  median: 0.058021 \n+  min:    0.054617 \n+  max:    0.059650 \n+  75%:    0.058836 \n+  95%:    0.059487 \n+  99%:    0.059617\n time_total \n-  avg:    0.080960 \n-  median: 0.085086 \n-  min:    0.069271 \n-  max:    0.088524 \n-  75%:    0.086805 \n-  95%:    0.088180 \n-  99%:    0.088455\n+  avg:    0.065653 \n+  median: 0.066109 \n+  min:    0.063293 \n+  max:    0.067558 \n+  75%:    0.066833 \n+  95%:    0.067413 \n+  99%:    0.067529\n \n time_dns\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.002395,0.002359,0.002346,0.002479,0.002419,0.002467,0.002477\n+0.002408,0.002392,0.002381,0.002451,0.002422,0.002445,0.002450\n time_connect\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.011057,0.011030,0.010994,0.011148,0.011089,0.011136,0.011146\n+0.011070,0.011041,0.011015,0.011154,0.011098,0.011143,0.011152\n time_appconnect\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.036565,0.037028,0.035427,0.037240,0.037134,0.037219,0.037236\n+0.029745,0.030285,0.027912,0.031037,0.030661,0.030962,0.031022\n time_pretransfer\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.036640,0.037100,0.035503,0.037317,0.037209,0.037295,0.037313\n+0.029831,0.030374,0.027996,0.031123,0.030749,0.031048,0.031108\n time_ttfb\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.069263,0.068266,0.060286,0.079237,0.073751,0.078140,0.079018\n+0.057429,0.058021,0.054617,0.059650,0.058836,0.059487,0.059617\n time_total\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.080960,0.085086,0.069271,0.088524,0.086805,0.088180,0.088455\n+0.065653,0.066109,0.063293,0.067558,0.066833,0.067413,0.067529\n\nreal    0m1.410s\nuser    0m0.298s\nsys     0m0.249s\n```\n\n# curl HTTP/3 support\n\n`curltimes.sh` script can optionally support curl HTTP/3 tests if you change script's `bin=` and `bin_http3` variables to match the path for your custom curl version binary built with HTTP/3 support as outlined at https://github.com/curl/curl/blob/master/docs/HTTP3.md. However, as curl HTTP/3 requests are done over QUIC and not TLS, you won't be testing TLSv1.2 or TLSv1.3 but HTTP/3 over QUIC.\n\nThen change script variables `http3='n'` to `http3='y'` and change the curl HTTP/3 binary's library path variable `library_path_http3` to where you installed it for custom curl HTTP/3 binary\n\n```\nbin='/usr/local/src/curl/src/curl'\nbin_http3='/usr/local/src/curl/src/curl'\nhttp3='y'\nlibrary_path_http3='/usr/lib/x86_64-linux-gnu'\n```\n\nThen running `csv-max-sum` option would display curl HTTP/3 binary timings but there is no TLS protocol info due to [HTTP/3 over QUIC and not TLS](https://github.com/curl/curl/issues/5763) and `time_appconnect` timings are not available right now resulting in zero values with curl HTTP/3 requests. See issue [here](https://github.com/curl/curl/issues/4516) (seems `time_connect` is now available since that issue was created).\n\n```\n./curltimes.sh csv-max-sum https://servermanager.guide\ncurl 7.72.0-DEV\nHTTP/3\nConnected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\n0.002418,0.015616,0,0.015679,0.043934,0.055905\n0.002461,0.015724,0,0.015787,0.040819,0.052362\n0.00238,0.015587,0,0.01565,0.088367,0.099117\n\ntime_dns \n  avg:    0.002420 \n  median: 0.002418 \n  min:    0.002380 \n  max:    0.002461 \n  75%:    0.002440 \n  95%:    0.002457 \n  99%:    0.002460\ntime_connect \n  avg:    0.015642 \n  median: 0.015616 \n  min:    0.015587 \n  max:    0.015724 \n  75%:    0.015670 \n  95%:    0.015713 \n  99%:    0.015722\ntime_appconnect \n  avg:    0.000000 \n  median: 0.000000 \n  min:    0.000000 \n  max:    0.000000 \n  75%:    0.000000 \n  95%:    0.000000 \n  99%:    0.000000\ntime_pretransfer \n  avg:    0.015705 \n  median: 0.015679 \n  min:    0.015650 \n  max:    0.015787 \n  75%:    0.015733 \n  95%:    0.015776 \n  99%:    0.015785\ntime_ttfb \n  avg:    0.057707 \n  median: 0.043934 \n  min:    0.040819 \n  max:    0.088367 \n  75%:    0.066150 \n  95%:    0.083924 \n  99%:    0.087478\ntime_total \n  avg:    0.069128 \n  median: 0.055905 \n  min:    0.052362 \n  max:    0.099117 \n  75%:    0.077511 \n  95%:    0.094796 \n  99%:    0.098253\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.002420,0.002418,0.002380,0.002461,0.002440,0.002457,0.002460\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.015642,0.015616,0.015587,0.015724,0.015670,0.015713,0.015722\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.015705,0.015679,0.015650,0.015787,0.015733,0.015776,0.015785\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.057707,0.043934,0.040819,0.088367,0.066150,0.083924,0.087478\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.069128,0.055905,0.052362,0.099117,0.077511,0.094796,0.098253\n```\n\n# Compare curl HTTP/3 over QUIC vs HTTP/2 over TLSv1.3\n\n```\nbin='/usr/local/src/curl/src/curl'\nbin_http3='/usr/local/src/curl/src/curl'\nhttp3='n'\nlibrary_path_http3='/usr/lib/x86_64-linux-gnu'\n\n./curltimes.sh csv-max-sum https://servermanager.guide \u003e curl-http2-tls13.txt\n```\n```\nbin='/usr/local/src/curl/src/curl'\nbin_http3='/usr/local/src/curl/src/curl'\nhttp3='y'\nlibrary_path_http3='/usr/lib/x86_64-linux-gnu'\n\n./curltimes.sh csv-max-sum https://servermanager.guide \u003e curl-http3-quic.txt\n```\n```\ndiff -u curl-http2-tls13.txt curl-http3-quic.txt                             \n--- curl-http2-tls13.txt        2020-08-03 11:43:11.165537343 +0000\n+++ curl-http3-quic.txt 2020-08-03 11:42:56.063429165 +0000\n@@ -1,77 +1,76 @@\n curl 7.72.0-DEV\n-TLSv1.3 TLS_AES_128_GCM_SHA256\n-HTTP/2\n-Connected to servermanager.guide (2606:4700:10::6816:42fa) port 443 (#0)\n+HTTP/3\n+Connected to servermanager.guide (2606:4700:10::6816:43fa) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 3\n \n-0.002326,0.010946,0.027514,0.027596,0.064009,0.072842\n-0.002312,0.010975,0.027706,0.027794,0.054353,0.063016\n-0.002343,0.010972,0.027919,0.028001,0.056304,0.064145\n+0.002068,0.015977,0,0.01604,0.045322,0.058387\n+0.002492,0.015228,0,0.015289,0.045792,0.057082\n+0.002454,0.014833,0,0.014896,0.040921,0.05188\n \n time_dns \n-  avg:    0.002327 \n-  median: 0.002326 \n-  min:    0.002312 \n-  max:    0.002343 \n-  75%:    0.002334 \n-  95%:    0.002341 \n-  99%:    0.002343\n+  avg:    0.002338 \n+  median: 0.002454 \n+  min:    0.002068 \n+  max:    0.002492 \n+  75%:    0.002473 \n+  95%:    0.002488 \n+  99%:    0.002491\n time_connect \n-  avg:    0.010964 \n-  median: 0.010972 \n-  min:    0.010946 \n-  max:    0.010975 \n-  75%:    0.010973 \n-  95%:    0.010975 \n-  99%:    0.010975\n+  avg:    0.015346 \n+  median: 0.015228 \n+  min:    0.014833 \n+  max:    0.015977 \n+  75%:    0.015603 \n+  95%:    0.015902 \n+  99%:    0.015962\n time_appconnect \n-  avg:    0.027713 \n-  median: 0.027706 \n-  min:    0.027514 \n-  max:    0.027919 \n-  75%:    0.027812 \n-  95%:    0.027898 \n-  99%:    0.027915\n+  avg:    0.000000 \n+  median: 0.000000 \n+  min:    0.000000 \n+  max:    0.000000 \n+  75%:    0.000000 \n+  95%:    0.000000 \n+  99%:    0.000000\n time_pretransfer \n-  avg:    0.027797 \n-  median: 0.027794 \n-  min:    0.027596 \n-  max:    0.028001 \n-  75%:    0.027898 \n-  95%:    0.027980 \n-  99%:    0.027997\n+  avg:    0.015408 \n+  median: 0.015289 \n+  min:    0.014896 \n+  max:    0.016040 \n+  75%:    0.015664 \n+  95%:    0.015965 \n+  99%:    0.016025\n time_ttfb \n-  avg:    0.058222 \n-  median: 0.056304 \n-  min:    0.054353 \n-  max:    0.064009 \n-  75%:    0.060157 \n-  95%:    0.063239 \n-  99%:    0.063855\n+  avg:    0.044012 \n+  median: 0.045322 \n+  min:    0.040921 \n+  max:    0.045792 \n+  75%:    0.045557 \n+  95%:    0.045745 \n+  99%:    0.045783\n time_total \n-  avg:    0.066668 \n-  median: 0.064145 \n-  min:    0.063016 \n-  max:    0.072842 \n-  75%:    0.068494 \n-  95%:    0.071972 \n-  99%:    0.072668\n+  avg:    0.055783 \n+  median: 0.057082 \n+  min:    0.051880 \n+  max:    0.058387 \n+  75%:    0.057734 \n+  95%:    0.058256 \n+  99%:    0.058361\n \n time_dns\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.002327,0.002326,0.002312,0.002343,0.002334,0.002341,0.002343\n+0.002338,0.002454,0.002068,0.002492,0.002473,0.002488,0.002491\n time_connect\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.010964,0.010972,0.010946,0.010975,0.010973,0.010975,0.010975\n+0.015346,0.015228,0.014833,0.015977,0.015603,0.015902,0.015962\n time_appconnect\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.027713,0.027706,0.027514,0.027919,0.027812,0.027898,0.027915\n+0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000\n time_pretransfer\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.027797,0.027794,0.027596,0.028001,0.027898,0.027980,0.027997\n+0.015408,0.015289,0.014896,0.016040,0.015664,0.015965,0.016025\n time_ttfb\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.058222,0.056304,0.054353,0.064009,0.060157,0.063239,0.063855\n+0.044012,0.045322,0.040921,0.045792,0.045557,0.045745,0.045783\n time_total\n avg:,median:,min:,max:,75%:,95%:,99%:\n-0.066668,0.064145,0.063016,0.072842,0.068494,0.071972,0.072668\n+0.055783,0.057082,0.051880,0.058387,0.057734,0.058256,0.058361\n```\n\n# Compare Mode\n\nExtended `curltimes.sh` to automate the above diff compare for TLSv1.2 versus TLSv1.3 in summary format without individual metrics\n\n```\ndomain=servermanager.guide\n./curltimes.sh compare https://$domain\n```\n```\ndomain=servermanager.guide\n./curltimes.sh compare https://$domain\n\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n-Connected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\n+Connected to servermanager.guide (2606:4700:10::6816:42fa) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 3\n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.006312,0.002349,0.002342,0.014245,0.008297,0.013055,0.014007\ntls13: 0.007001,0.002409,0.002332,0.016262,0.009335,0.014877,0.015985\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.015793,0.013359,0.011095,0.022924,0.018142,0.021968,0.022733\ntls13: 0.016479,0.011109,0.011041,0.027288,0.019198,0.025670,0.026964\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.044413,0.045667,0.039694,0.047878,0.046772,0.047657,0.047834\ntls13: 0.034607,0.029052,0.028229,0.046539,0.037796,0.044790,0.046189\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.044489,0.045755,0.039760,0.047951,0.046853,0.047731,0.047907\ntls13: 0.034687,0.029118,0.028320,0.046623,0.037871,0.044872,0.046273\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.083920,0.079920,0.075112,0.096729,0.088325,0.095048,0.096393\ntls13: 0.066135,0.062355,0.059512,0.076539,0.069447,0.075121,0.076255\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.095370,0.094142,0.084327,0.107640,0.100891,0.106290,0.107370\ntls13: 0.077608,0.073708,0.072246,0.086870,0.080289,0.085554,0.086607\n```\n\n# curl resolve mode\n\n`curltimes.sh` supports curl's `--resolve domain:443:[ip_address]` so you can tell curl to connect and resolve to a specific IP address overriding DNS for that domain. Useful for when testing domains that use Cloudflare proxy which have more than 1 IP address associated with the domain's DNS A and AAAA records. This ensures you're testing TLSv1.2 vs TLSv1.3 on the same server/IP.\n\nBy default `curltimes.sh` tests against IPv6 address first and fallbacks to IPv4 if IPv6 isn't supported. But if you want to force IPv4 tests, change in script `force_ipv4='n'` to `force_ipv4='y'`.\n\nRun `csv-max-sum` and tell curl to connect to `domain=servermanager.guide` using IPv6 address `2606:4700:10::ac43:26be`\n\n```\ndig +short AAAA servermanager.guide                          \n2606:4700:10::ac43:26be\n2606:4700:10::6816:42fa\n2606:4700:10::6816:43fa\n```\n\n```\ndomain=servermanager.guide\n./curltimes.sh csv-max-sum https://$domain 2606:4700:10::ac43:26be                           \ncurl 7.72.0-DEV\nTLSv1.3 TLS_AES_128_GCM_SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\nCloudflare proxied https://servermanager.guide\nSample Size: 3\n\n0.002388,0.011001,0.027721,0.027805,0.055312,0.063218\n0.002387,0.011143,0.028621,0.028703,0.057248,0.067432\n0.002407,0.011234,0.027669,0.027752,0.057698,0.066897\n\ntime_dns \n  avg:    0.002394 \n  median: 0.002388 \n  min:    0.002387 \n  max:    0.002407 \n  75%:    0.002398 \n  95%:    0.002405 \n  99%:    0.002407\ntime_connect \n  avg:    0.011126 \n  median: 0.011143 \n  min:    0.011001 \n  max:    0.011234 \n  75%:    0.011188 \n  95%:    0.011225 \n  99%:    0.011232\ntime_appconnect \n  avg:    0.028004 \n  median: 0.027721 \n  min:    0.027669 \n  max:    0.028621 \n  75%:    0.028171 \n  95%:    0.028531 \n  99%:    0.028603\ntime_pretransfer \n  avg:    0.028087 \n  median: 0.027805 \n  min:    0.027752 \n  max:    0.028703 \n  75%:    0.028254 \n  95%:    0.028613 \n  99%:    0.028685\ntime_ttfb \n  avg:    0.056753 \n  median: 0.057248 \n  min:    0.055312 \n  max:    0.057698 \n  75%:    0.057473 \n  95%:    0.057653 \n  99%:    0.057689\ntime_total \n  avg:    0.065849 \n  median: 0.066897 \n  min:    0.063218 \n  max:    0.067432 \n  75%:    0.067164 \n  95%:    0.067378 \n  99%:    0.067421\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.002394,0.002388,0.002387,0.002407,0.002398,0.002405,0.002407\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.011126,0.011143,0.011001,0.011234,0.011188,0.011225,0.011232\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.028004,0.027721,0.027669,0.028621,0.028171,0.028531,0.028603\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.028087,0.027805,0.027752,0.028703,0.028254,0.028613,0.028685\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.056753,0.057248,0.055312,0.057698,0.057473,0.057653,0.057689\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.065849,0.066897,0.063218,0.067432,0.067164,0.067378,0.067421\n```\n\nRun `compare` and tell curl to connect to `domain=servermanager.guide` using IPv6 address `2606:4700:10::ac43:26be`\n\n```\ndomain=servermanager.guide\n./curltimes.sh compare https://$domain 2606:4700:10::ac43:26be\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 3\n \n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.002273,0.002341,0.002040,0.002438,0.002389,0.002428,0.002436\ntls13: 0.002303,0.002342,0.002106,0.002461,0.002402,0.002449,0.002459\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.010944,0.010974,0.010692,0.011165,0.011069,0.011146,0.011161\ntls13: 0.010984,0.011001,0.010871,0.011080,0.011040,0.011072,0.011078\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.037632,0.037541,0.037520,0.037834,0.037687,0.037805,0.037828\ntls13: 0.027178,0.026750,0.026311,0.028474,0.027612,0.028302,0.028440\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.037710,0.037609,0.037608,0.037914,0.037762,0.037883,0.037908\ntls13: 0.027265,0.026839,0.026394,0.028561,0.027700,0.028389,0.028527\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.074693,0.078118,0.064590,0.081372,0.079745,0.081047,0.081307\ntls13: 0.061370,0.056089,0.054502,0.073519,0.064804,0.071776,0.073170\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.083769,0.087006,0.074226,0.090074,0.088540,0.089767,0.090013\ntls13: 0.070788,0.064854,0.064317,0.083194,0.074024,0.081360,0.082827\n```\n\nRun `compare` and tell curl to connect to `domain=servermanager.guide` using all available IP addresses attached to the domain\n\n```\ndig +short AAAA servermanager.guide                          \n2606:4700:10::ac43:26be\n2606:4700:10::6816:42fa\n2606:4700:10::6816:43fa\n```\n```\ndig +short AAAA servermanager.guide | while read ip; do echo; domain=servermanager.guide; ./curltimes.sh compare https://$domain $ip; done\n\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (2606:4700:10::6816:42fa) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 33\n \n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.000025,0.000025,0.000020,0.000026,0.000025,0.000026,0.000026\ntls13: 0.000025,0.000025,0.000024,0.000026,0.000026,0.000026,0.000026\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.010083,0.011044,0.008652,0.011193,0.011088,0.011148,0.011182\ntls13: 0.010099,0.011044,0.008677,0.011190,0.011110,0.011149,0.011177\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.039038,0.040243,0.033176,0.047499,0.041386,0.044336,0.046505\ntls13: 0.029268,0.029406,0.024333,0.040761,0.030714,0.035750,0.039538\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.039119,0.040309,0.033263,0.047585,0.041480,0.044415,0.046588\ntls13: 0.029349,0.029485,0.024418,0.040846,0.030803,0.035830,0.039621\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.087151,0.069190,0.056990,0.663826,0.072905,0.081628,0.478225\ntls13: 0.058539,0.057606,0.047161,0.077984,0.063481,0.071283,0.075865\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.097619,0.079912,0.065917,0.672491,0.083919,0.093142,0.487833\ntls13: 0.069042,0.067686,0.055383,0.096125,0.074209,0.085111,0.093838\n\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (2606:4700:10::6816:43fa) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 33\n \n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.000025,0.000025,0.000023,0.000026,0.000026,0.000026,0.000026\ntls13: 0.000025,0.000025,0.000024,0.000029,0.000026,0.000026,0.000028\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.008726,0.008719,0.008653,0.008915,0.008745,0.008799,0.008880\ntls13: 0.008718,0.008712,0.008656,0.008857,0.008743,0.008792,0.008837\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.034422,0.033977,0.032593,0.040353,0.034435,0.039491,0.040205\ntls13: 0.025299,0.024797,0.023931,0.036109,0.025368,0.027200,0.033315\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.034506,0.034068,0.032667,0.040433,0.034525,0.039572,0.040285\ntls13: 0.025381,0.024882,0.024011,0.036191,0.025455,0.027284,0.033400\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.067356,0.060527,0.052128,0.151831,0.069639,0.093947,0.141133\ntls13: 0.053913,0.052717,0.044503,0.074495,0.055531,0.067609,0.073210\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.076999,0.070714,0.061163,0.162636,0.081503,0.104291,0.152367\ntls13: 0.063297,0.061701,0.054232,0.084139,0.066266,0.078864,0.083847\n\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 33\n \n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.000025,0.000025,0.000021,0.000037,0.000026,0.000026,0.000034\ntls13: 0.000025,0.000025,0.000022,0.000028,0.000026,0.000027,0.000028\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.008706,0.008701,0.008633,0.008807,0.008734,0.008772,0.008800\ntls13: 0.008702,0.008693,0.008632,0.008824,0.008726,0.008769,0.008814\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.034213,0.033580,0.032419,0.041174,0.034753,0.038515,0.041058\ntls13: 0.025060,0.024716,0.024137,0.029303,0.025110,0.027225,0.028939\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.034297,0.033668,0.032494,0.041251,0.034843,0.038605,0.041136\ntls13: 0.025142,0.024795,0.024216,0.029374,0.025191,0.027307,0.029012\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.062295,0.061499,0.053344,0.077344,0.065682,0.073393,0.076253\ntls13: 0.052009,0.051708,0.044970,0.061672,0.053383,0.059193,0.061464\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.073144,0.072723,0.061965,0.111716,0.075453,0.088226,0.105054\ntls13: 0.061540,0.061019,0.052092,0.074847,0.062104,0.069454,0.073440\n```\n\n# Environment Variables\n\n`curltimes.sh` supports environment variables to override the defaults. Currently, supported variables include:\n\n* `curlruns` - value set overrides `total` variable within script which determines how many curl runs and samples are collected.\n* `ipv4=1` - enables and forces IPv4 curl connection.\n* `h3=1` - enables HTTP/3 for `json`, `json-max`, `csv`, `csv-sum`, `csv-max`, `csv-max-sum` options but not supported in `compare` mode as TLSv1.2/TLSv1.3 are not used as HTTP/3 is over a QUIC connection. HTTP/3 mode only works once you have edited curl binary log and library paths as outlined [here](https://github.com/centminmod/curltimes#curl-http3-support).\n* `bin_h3` - set path to your curl HTTP/3 binary\n* `lib_h3` - set path to your curl HTTP/3 library directory\n* `custom_ciphers=1` - enables use of custom cipher preferences used by curl via `--ciphers` flag for TLSv1.2 and `--tls13-ciphers` flag for TLSv1.3 via curl cipher preferences defined in 2 variables - `curl_ciphers_tls12='ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256'` (ordered right to left) and `curl_ciphers_tls13='TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256'` (ordered left to right).\n\n## To unset/clear environment variables\n\n```\nunset bin_h3\nunset lib_h3\nunset h3\nunset ipv4\nunset curlruns\nunset custom_ciphers\n```\n\n## To set environment variables:\n\n### custom ciphers\n\nCompare TLSv1.2 vs TLSv1.3 on Ubuntu 20.04.1 LTS's curl v7.68 with native curl ciphers. Notice TLSv1.2 curl 7.68 natively uses `ECDHE-ECDSA-CHACHA20-POLY1305` and TLSv1.3 uses `TLS_AES_256_GCM_SHA384`\n\n```\nexport custom_ciphers=0; ./curltimes.sh compare https://servermanager.guide \n-TLSv1.2 ECDHE-ECDSA-CHACHA20-POLY1305\n+TLSv1.3 TLS_AES_256_GCM_SHA384\n HTTP/2\n curl 7.68.0\n Connected to servermanager.guide (104.22.66.250) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 3\n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.006002,0.005802,0.001994,0.010209,0.008006,0.009768,0.010121\ntls13: 0.008544,0.005324,0.001612,0.018696,0.012010,0.017359,0.018429\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.008041,0.007807,0.004117,0.012198,0.010002,0.011759,0.012110\ntls13: 0.010495,0.007277,0.003518,0.020689,0.013983,0.019348,0.020421\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.054065,0.045499,0.041126,0.075569,0.060534,0.072562,0.074968\ntls13: 0.046345,0.035228,0.028690,0.075118,0.055173,0.071129,0.074320\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.054320,0.045799,0.041353,0.075809,0.060804,0.072808,0.075209\ntls13: 0.046603,0.035526,0.028947,0.075337,0.055431,0.071356,0.074541\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.088164,0.078886,0.073939,0.111667,0.095276,0.108389,0.111011\ntls13: 0.082943,0.073260,0.069501,0.106068,0.089664,0.102787,0.105412\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.096051,0.085332,0.081077,0.121745,0.103539,0.118104,0.121017\ntls13: 0.092683,0.081521,0.077531,0.118996,0.100259,0.115248,0.118246\n```\n\nversus compare TLSv1.2 vs TLSv1.3 on Ubuntu 20.04.1 LTS's curl v7.68 with custom curl ciphers. Notice with `custom_ciphers=1` environment variable enabled, TLSv1.2 curl 7.68 uses `ECDHE-ECDSA-AES128-GCM-SHA256` and TLSv1.3 uses `TLS_AES_128_GCM_SHA256`\n\n```\nexport custom_ciphers=1; ./curltimes.sh compare https://servermanager.guide\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n curl 7.68.0\n Connected to servermanager.guide (104.22.66.250) port 443 (#0)\n Cloudflare proxied https://servermanager.guide\n Sample Size: 3\n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.003613,0.001637,0.001623,0.007578,0.004607,0.006984,0.007459\ntls13: 0.003283,0.002643,0.002293,0.004913,0.003778,0.004686,0.004868\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.005418,0.003617,0.003602,0.009035,0.006326,0.008493,0.008927\ntls13: 0.005273,0.004694,0.004222,0.006902,0.005798,0.006681,0.006858\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.042692,0.030561,0.027277,0.070238,0.050400,0.066270,0.069444\ntls13: 0.050650,0.044449,0.037568,0.069934,0.057192,0.067385,0.069424\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.042925,0.030787,0.027507,0.070481,0.050634,0.066512,0.069687\ntls13: 0.051616,0.046902,0.037776,0.070171,0.058537,0.067844,0.069706\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.072727,0.060584,0.049837,0.107761,0.084172,0.103043,0.106817\ntls13: 0.086993,0.087799,0.070482,0.102697,0.095248,0.101207,0.102399\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.080906,0.064812,0.059272,0.118635,0.091723,0.113253,0.117559\ntls13: 0.095742,0.092309,0.082541,0.112377,0.102343,0.110370,0.111976\n```\n\n### Diff Compare Custom SSL Ciphers\n\nCompare Ubuntu 20.04.1 LTS's curl 7.68 native TLSv1.2 \u0026 TLSv1.3 ciphers with custom ciphers with curl resolved to same IP\n\n```\ndiff -u \u003c(export custom_ciphers=0; ./curltimes.sh compare https://servermanager.guide/ 104.22.66.250) \u003c(export custom_ciphers=1; ./curltimes.sh compare https://servermanager.guide/ 104.22.66.250)\n--- /dev/fd/63  2020-08-14 23:46:01.977813329 +0000\n+++ /dev/fd/62  2020-08-14 23:46:01.977813329 +0000\n@@ -1,5 +1,5 @@\n--TLSv1.2 ECDHE-ECDSA-CHACHA20-POLY1305\n-+TLSv1.3 TLS_AES_256_GCM_SHA384\n+-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n++TLSv1.3 TLS_AES_128_GCM_SHA256\n  HTTP/2\n  curl 7.68.0\n  Connected to servermanager.guide (104.22.66.250) port 443 (#0)\n@@ -8,25 +8,25 @@\n \n        time_dns\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.011205,0.004589,0.003083,0.025942,0.015265,0.023807,0.025515\n-tls13: 0.004012,0.004849,0.001657,0.005529,0.005189,0.005461,0.005515\n+tls12: 0.011578,0.008823,0.004229,0.021681,0.015252,0.020395,0.021424\n+tls13: 0.006238,0.006474,0.004226,0.008013,0.007244,0.007859,0.007982\n        time_connect\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.014815,0.009951,0.006515,0.027978,0.018965,0.026175,0.027617\n-tls13: 0.006937,0.006957,0.003133,0.010721,0.008839,0.010345,0.010646\n+tls12: 0.013304,0.010206,0.006130,0.023575,0.016890,0.022238,0.023308\n+tls13: 0.008224,0.008406,0.006310,0.009955,0.009180,0.009800,0.009924\n        time_appconnect\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.096528,0.090889,0.048101,0.150595,0.120742,0.144624,0.149401\n-tls13: 0.073811,0.080793,0.020515,0.120126,0.100460,0.116193,0.119339\n+tls12: 0.083564,0.064394,0.046253,0.140044,0.102219,0.132479,0.138531\n+tls13: 0.069499,0.054430,0.053008,0.101059,0.077745,0.096396,0.100126\n        time_pretransfer\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.096752,0.091098,0.048339,0.150818,0.120958,0.144846,0.149624\n-tls13: 0.074028,0.081004,0.020730,0.120351,0.100678,0.116416,0.119564\n+tls12: 0.083794,0.064604,0.046472,0.140307,0.102456,0.132737,0.138793\n+tls13: 0.069718,0.054643,0.053233,0.101277,0.077960,0.096614,0.100344\n        time_ttfb\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.145099,0.170080,0.086449,0.178767,0.174423,0.177898,0.178593\n-tls13: 0.143531,0.152353,0.105358,0.172883,0.162618,0.170830,0.172472\n+tls12: 0.126950,0.110409,0.093734,0.176706,0.143557,0.170076,0.175380\n+tls13: 0.115679,0.100193,0.096733,0.150110,0.125151,0.145118,0.149112\n        time_total\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.156260,0.182053,0.093776,0.192951,0.187502,0.191861,0.192733\n-tls13: 0.151158,0.159049,0.114568,0.179858,0.169453,0.177777,0.179442\n+tls12: 0.137379,0.124460,0.101905,0.185772,0.155116,0.179641,0.184546\n+tls13: 0.128206,0.110756,0.110158,0.163703,0.137230,0.158408,0.162644\n```\n\n### IPv4 vs IPv6\n\ncompare IPv4 vs IPv6 `curltimes.sh` runs \n\n```\ndiff -u \u003c(export ipv4=1; ./curltimes.sh compare https://servermanager.guide/) \u003c(export ipv4=0; ./curltimes.sh compare https://servermanager.guide/)\n--- /dev/fd/63  2020-08-05 17:32:32.773262582 +0000\n+++ /dev/fd/62  2020-08-05 17:32:32.773262582 +0000\n@@ -2,31 +2,31 @@\n -TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n +TLSv1.3 TLS_AES_128_GCM_SHA256\n  HTTP/2\n- Connected to servermanager.guide (104.22.66.250) port 443 (#0)\n+ Connected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\n  Cloudflare proxied https://servermanager.guide/\n  Sample Size: 11\n \n        time_dns\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.002077,0.002059,0.002006,0.002299,0.002097,0.002205,0.002280\n-tls13: 0.002092,0.002056,0.001963,0.002428,0.002130,0.002295,0.002401\n+tls12: 0.002144,0.002097,0.002030,0.002421,0.002147,0.002372,0.002411\n+tls13: 0.002161,0.002109,0.002058,0.002488,0.002163,0.002407,0.002472\n        time_connect\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.013772,0.011036,0.010907,0.021395,0.015862,0.021358,0.021388\n-tls13: 0.013775,0.011050,0.010858,0.021438,0.016016,0.021423,0.021435\n+tls12: 0.010776,0.010724,0.010674,0.011026,0.010810,0.011016,0.011024\n+tls13: 0.010855,0.010786,0.010701,0.011132,0.010897,0.011083,0.011122\n        time_appconnect\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.047508,0.037708,0.036823,0.077156,0.053092,0.076873,0.077099\n-tls13: 0.033566,0.027502,0.026627,0.050332,0.039158,0.050028,0.050271\n+tls12: 0.036577,0.035408,0.034458,0.045465,0.036535,0.041822,0.044736\n+tls13: 0.027222,0.027004,0.026216,0.029019,0.027584,0.028997,0.029015\n        time_pretransfer\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.047597,0.037784,0.036901,0.077249,0.053159,0.076952,0.077190\n-tls13: 0.033648,0.027582,0.026706,0.050414,0.039242,0.050108,0.050353\n+tls12: 0.036664,0.035513,0.034550,0.045535,0.036618,0.041896,0.044807\n+tls13: 0.027305,0.027097,0.026301,0.029102,0.027668,0.029083,0.029098\n        time_ttfb\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.084272,0.072064,0.061022,0.126004,0.097472,0.125499,0.125903\n-tls13: 0.068917,0.059372,0.051965,0.100478,0.084044,0.100301,0.100443\n+tls12: 0.063700,0.064039,0.055325,0.075642,0.067243,0.073135,0.075141\n+tls13: 0.053768,0.052910,0.047872,0.060991,0.054959,0.060255,0.060844\n        time_total\n        avg:,median:,min:,max:,75%:,95%:,99%:\n-tls12: 0.096266,0.081401,0.070310,0.145221,0.111710,0.144299,0.145037\n-tls13: 0.078791,0.068584,0.060828,0.120495,0.092188,0.114550,0.119306\n+tls12: 0.073090,0.073095,0.064207,0.084682,0.076296,0.082443,0.084234\n+tls13: 0.062669,0.061688,0.056864,0.069835,0.064686,0.069074,0.069683\n```\n\nexample setting `h3=1`, `ipv4=1` and `curlruns=9` and `bin_h3='/usr/local/src/curl/src/curl'` and `lib_h3='/usr/lib/x86_64-linux-gnu'`\n\n```\nexport bin_h3='/usr/local/src/curl/src/curl'\nexport lib_h3='/usr/lib/x86_64-linux-gnu'\nexport h3=1\nexport ipv4=1\nexport curlruns=9\n./curltimes.sh csv-max-sum https://servermanager.guide                                \ncurl 7.72.0-DEV\nHTTP/3\nConnected to servermanager.guide (104.22.67.250) port 443 (#0)\nSample Size: 9\n\n0.002295,0.016681,0,0.016746,0.051228,0.063913\n0.002299,0.018685,0,0.018749,0.054747,0.068125\n0.001971,0.015321,0,0.015386,0.055653,0.067125\n0.002293,0.019275,0,0.019341,0.059958,0.074864\n0.002361,0.017828,0,0.017891,0.056725,0.07114\n0.00238,0.017844,0,0.017908,0.050139,0.063757\n0.002352,0.01534,0,0.015406,0.053851,0.065687\n0.002448,0.016069,0,0.016134,0.044222,0.056\n0.002016,0.014094,0,0.014158,0.050546,0.06078\n\ntime_dns \n  avg:    0.002268 \n  median: 0.002299 \n  min:    0.001971 \n  max:    0.002448 \n  75%:    0.002361 \n  95%:    0.002421 \n  99%:    0.002443\ntime_connect \n  avg:    0.016793 \n  median: 0.016681 \n  min:    0.014094 \n  max:    0.019275 \n  75%:    0.017844 \n  95%:    0.019039 \n  99%:    0.019228\ntime_appconnect \n  avg:    0.000000 \n  median: 0.000000 \n  min:    0.000000 \n  max:    0.000000 \n  75%:    0.000000 \n  95%:    0.000000 \n  99%:    0.000000\ntime_pretransfer \n  avg:    0.016858 \n  median: 0.016746 \n  min:    0.014158 \n  max:    0.019341 \n  75%:    0.017908 \n  95%:    0.019104 \n  99%:    0.019294\ntime_ttfb \n  avg:    0.053008 \n  median: 0.053851 \n  min:    0.044222 \n  max:    0.059958 \n  75%:    0.055653 \n  95%:    0.058665 \n  99%:    0.059699\ntime_total \n  avg:    0.065710 \n  median: 0.065687 \n  min:    0.056000 \n  max:    0.074864 \n  75%:    0.068125 \n  95%:    0.073374 \n  99%:    0.074566\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.002268,0.002299,0.001971,0.002448,0.002361,0.002421,0.002443\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.016793,0.016681,0.014094,0.019275,0.017844,0.019039,0.019228\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.016858,0.016746,0.014158,0.019341,0.017908,0.019104,0.019294\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.053008,0.053851,0.044222,0.059958,0.055653,0.058665,0.059699\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.065710,0.065687,0.056000,0.074864,0.068125,0.073374,0.074566\n```\n\nexample setting `h3=1`, `ipv4=1` and `curlruns=9`\n\n```\nexport h3=1; export curlruns=9; ./curltimes.sh csv-max-sum https://servermanager.guide\ncurl 7.72.0-DEV\nHTTP/3\nConnected to servermanager.guide (104.22.66.250) port 443 (#0)\nSample Size: 9\n\n0.002321,0.015649,0,0.015713,0.059255,0.074366\n0.002275,0.01915,0,0.019216,0.060405,0.073003\n0.002069,0.014761,0,0.014825,0.040994,0.051945\n0.002372,0.015474,0,0.015538,0.047742,0.058395\n0.002302,0.016191,0,0.016256,0.083929,0.096794\n0.002396,0.020889,0,0.020954,0.050261,0.061726\n0.002317,0.016253,0,0.016317,0.075135,0.089547\n0.002062,0.016816,0,0.016882,0.045394,0.058711\n0.002357,0.014203,0,0.014267,0.041617,0.053641\n\ntime_dns \n  avg:    0.002275 \n  median: 0.002317 \n  min:    0.002062 \n  max:    0.002396 \n  75%:    0.002357 \n  95%:    0.002386 \n  99%:    0.002394\ntime_connect \n  avg:    0.016598 \n  median: 0.016191 \n  min:    0.014203 \n  max:    0.020889 \n  75%:    0.016816 \n  95%:    0.020193 \n  99%:    0.020750\ntime_appconnect \n  avg:    0.000000 \n  median: 0.000000 \n  min:    0.000000 \n  max:    0.000000 \n  75%:    0.000000 \n  95%:    0.000000 \n  99%:    0.000000\ntime_pretransfer \n  avg:    0.016663 \n  median: 0.016256 \n  min:    0.014267 \n  max:    0.020954 \n  75%:    0.016882 \n  95%:    0.020259 \n  99%:    0.020815\ntime_ttfb \n  avg:    0.056081 \n  median: 0.050261 \n  min:    0.040994 \n  max:    0.083929 \n  75%:    0.060405 \n  95%:    0.080411 \n  99%:    0.083225\ntime_total \n  avg:    0.068681 \n  median: 0.061726 \n  min:    0.051945 \n  max:    0.096794 \n  75%:    0.074366 \n  95%:    0.093895 \n  99%:    0.096214\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.002275,0.002317,0.002062,0.002396,0.002357,0.002386,0.002394\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.016598,0.016191,0.014203,0.020889,0.016816,0.020193,0.020750\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.016663,0.016256,0.014267,0.020954,0.016882,0.020259,0.020815\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.056081,0.050261,0.040994,0.083929,0.060405,0.080411,0.083225\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.068681,0.061726,0.051945,0.096794,0.074366,0.093895,0.096214\n```\n\nexample setting `ipv4=1` and `curlruns=9`\n\n```\nexport ipv4=1; export curlruns=9; ./curltimes.sh compare https://servermanager.guide\n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (104.22.67.250) port 443 (#0)\n Sample Size: 9\n \n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.002266,0.002306,0.001963,0.002981,0.002375,0.002752,0.002935\ntls13: 0.002164,0.002065,0.002008,0.002353,0.002305,0.002343,0.002351\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.011470,0.011221,0.010863,0.012769,0.011674,0.012554,0.012726\ntls13: 0.011150,0.011199,0.010907,0.011664,0.011224,0.011501,0.011631\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.038583,0.037770,0.035704,0.044849,0.040180,0.043083,0.044496\ntls13: 0.028934,0.028282,0.026903,0.033745,0.030355,0.032446,0.033485\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.038659,0.037840,0.035786,0.044915,0.040259,0.043149,0.044562\ntls13: 0.029023,0.028363,0.026984,0.033866,0.030450,0.032554,0.033604\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.073622,0.068073,0.060629,0.118547,0.074154,0.101701,0.115178\ntls13: 0.062501,0.055822,0.051451,0.108622,0.063113,0.090978,0.105093\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.085110,0.077332,0.069529,0.147206,0.083043,0.122934,0.142352\ntls13: 0.071165,0.064227,0.060406,0.117624,0.070848,0.100372,0.114174\n```\n\nexample of setting `curlruns=9`\n\n```\nexport curlruns=9; ./curltimes.sh compare https://servermanager.guide \n curl 7.72.0-DEV\n-TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256\n+TLSv1.3 TLS_AES_128_GCM_SHA256\n HTTP/2\n Connected to servermanager.guide (2606:4700:10::6816:42fa) port 443 (#0)\n Sample Size: 9\n \n\n       time_dns\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.002187,0.002133,0.002044,0.002341,0.002262,0.002328,0.002338\ntls13: 0.002298,0.002338,0.002043,0.002561,0.002448,0.002521,0.002553\n       time_connect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.011639,0.010946,0.010742,0.013267,0.013115,0.013238,0.013261\ntls13: 0.011529,0.011110,0.010665,0.013538,0.011268,0.013376,0.013506\n       time_appconnect\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.037602,0.035707,0.034805,0.042342,0.042305,0.042340,0.042342\ntls13: 0.028889,0.027606,0.026484,0.032393,0.031420,0.032186,0.032352\n       time_pretransfer\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.037685,0.035797,0.034889,0.042421,0.042386,0.042421,0.042421\ntls13: 0.028973,0.027697,0.026567,0.032475,0.031508,0.032268,0.032434\n       time_ttfb\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.068222,0.068780,0.057609,0.080518,0.071698,0.077504,0.079915\ntls13: 0.063180,0.059101,0.053305,0.086026,0.062583,0.081901,0.085201\n       time_total\n       avg:,median:,min:,max:,75%:,95%:,99%:\ntls12: 0.078020,0.077660,0.067355,0.091523,0.080867,0.088713,0.090961\ntls13: 0.072594,0.069236,0.062089,0.094605,0.071386,0.091319,0.093948\n```\n```\nexport curlruns=9; ./curltimes.sh csv-max-sum https://servermanager.guide      \ncurl 7.72.0-DEV\nTLSv1.3 TLS_AES_128_GCM_SHA256\nHTTP/2\nConnected to servermanager.guide (2606:4700:10::ac43:26be) port 443 (#0)\nSample Size: 9\n\n0.002307,0.010995,0.038922,0.039008,0.07083,0.080726\n0.015496,0.024134,0.043342,0.043424,0.068281,0.078138\n0.002345,0.011095,0.02733,0.027414,0.048162,0.057521\n0.014392,0.025453,0.044971,0.045054,0.098739,0.107577\n0.002321,0.011045,0.028931,0.029016,0.097482,0.106865\n0.002073,0.010717,0.030454,0.030537,0.092841,0.103577\n0.00207,0.010795,0.030796,0.030884,0.066117,0.075068\n0.002316,0.01333,0.031471,0.031555,0.061374,0.069335\n0.002076,0.013093,0.03159,0.031673,0.078254,0.089818\n\ntime_dns \n  avg:    0.005044 \n  median: 0.002316 \n  min:    0.002070 \n  max:    0.015496 \n  75%:    0.002345 \n  95%:    0.015054 \n  99%:    0.015408\ntime_connect \n  avg:    0.014517 \n  median: 0.011095 \n  min:    0.010717 \n  max:    0.025453 \n  75%:    0.013330 \n  95%:    0.024925 \n  99%:    0.025347\ntime_appconnect \n  avg:    0.034201 \n  median: 0.031471 \n  min:    0.027330 \n  max:    0.044971 \n  75%:    0.038922 \n  95%:    0.044319 \n  99%:    0.044841\ntime_pretransfer \n  avg:    0.034285 \n  median: 0.031555 \n  min:    0.027414 \n  max:    0.045054 \n  75%:    0.039008 \n  95%:    0.044402 \n  99%:    0.044924\ntime_ttfb \n  avg:    0.075787 \n  median: 0.070830 \n  min:    0.048162 \n  max:    0.098739 \n  75%:    0.092841 \n  95%:    0.098236 \n  99%:    0.098638\ntime_total \n  avg:    0.085403 \n  median: 0.080726 \n  min:    0.057521 \n  max:    0.107577 \n  75%:    0.103577 \n  95%:    0.107292 \n  99%:    0.107520\n\ntime_dns\navg:,median:,min:,max:,75%:,95%:,99%:\n0.005044,0.002316,0.002070,0.015496,0.002345,0.015054,0.015408\ntime_connect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.014517,0.011095,0.010717,0.025453,0.013330,0.024925,0.025347\ntime_appconnect\navg:,median:,min:,max:,75%:,95%:,99%:\n0.034201,0.031471,0.027330,0.044971,0.038922,0.044319,0.044841\ntime_pretransfer\navg:,median:,min:,max:,75%:,95%:,99%:\n0.034285,0.031555,0.027414,0.045054,0.039008,0.044402,0.044924\ntime_ttfb\navg:,median:,min:,max:,75%:,95%:,99%:\n0.075787,0.070830,0.048162,0.098739,0.092841,0.098236,0.098638\ntime_total\navg:,median:,min:,max:,75%:,95%:,99%:\n0.085403,0.080726,0.057521,0.107577,0.103577,0.107292,0.107520\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentminmod%2Fcurltimes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcentminmod%2Fcurltimes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentminmod%2Fcurltimes/lists"}