Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API client: make http reads more efficient #976

Merged
merged 1 commit into from Jan 25, 2022

Commits on Jan 24, 2022

  1. API client: make http reads more efficient

    Replace `io.ReadAll` with `bytes.Buffer.ReadFrom`.
    Both need to resize a buffer until they have finished reading;
    the former increases by 1.25x each time while the latter uses 2x.
    
    Also added a benchmark to demonstrate the benefit:
    name             old time/op    new time/op    delta
    Client/4KB-8       35.9µs ± 4%    35.3µs ± 3%     ~     (p=0.310 n=5+5)
    Client/50KB-8      83.1µs ± 8%    69.5µs ± 1%  -16.37%  (p=0.008 n=5+5)
    Client/1000KB-8     891µs ± 6%     750µs ± 0%  -15.83%  (p=0.016 n=5+4)
    Client/2000KB-8    1.74ms ± 2%    1.35ms ± 1%  -22.72%  (p=0.008 n=5+5)
    
    name             old alloc/op   new alloc/op   delta
    Client/4KB-8       20.2kB ± 0%    20.4kB ± 0%   +1.26%  (p=0.008 n=5+5)
    Client/50KB-8       218kB ± 0%     136kB ± 0%  -37.65%  (p=0.008 n=5+5)
    Client/1000KB-8    5.88MB ± 0%    2.11MB ± 0%  -64.10%  (p=0.008 n=5+5)
    Client/2000KB-8    11.7MB ± 0%     4.2MB ± 0%  -63.93%  (p=0.008 n=5+5)
    
    name             old allocs/op  new allocs/op  delta
    Client/4KB-8         75.0 ± 0%      72.0 ± 0%   -4.00%  (p=0.008 n=5+5)
    Client/50KB-8         109 ± 0%        98 ± 0%  -10.09%  (p=0.079 n=4+5)
    Client/1000KB-8       617 ± 0%       593 ± 0%   -3.89%  (p=0.008 n=5+5)
    Client/2000KB-8     1.13k ± 0%     1.09k ± 0%   -3.27%  (p=0.008 n=5+5)
    
    Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
    bboreham committed Jan 24, 2022
    Copy the full SHA
    fcb6c63 View commit details
    Browse the repository at this point in the history