dlang-requests 0.1.7 released

ikod via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon Jun 20 02:32:12 PDT 2016


On Friday, 17 June 2016 at 17:31:55 UTC, ikod wrote:
> On Tuesday, 14 June 2016 at 14:59:37 UTC, Andrei Alexandrescu 
> wrote:
>> On 6/11/16 7:03 PM, ikod wrote:
>>> Hello,
>>>
>>> Dlang-requests is library created under influence of 
>>> Python-requests,
>>> with primary goal of easy to use and performance.
>>>
> ...
>>
>> Thanks! Does the project have a dub presence? How does it 
>> compare feature-wise and speed-wise with curl? -- Andrei
>
> Hello,
>
> Finally, I made some improvements and run minimal performance 
> tests against command-line curl. I wrote simple code for file 
> download using dlang-requests, run it and curl for the same 
> urls(httpbin server on my notebook) and compare "total", 
> "system", and "user" time for different cases. You can find 
> numbers and code below.
> So my conclusion is - performances are comparable for these 
> cases, but there is some field for improvement in 
> dlang-requests.
>
> Case 1 - 50Mb of random data, no any encoding
> Case 2 - 50Mb of random data, transfer chunked
> Case 3 - 50Mb of random data, transfer chunked, content gzip
>
>           measured times, sec
> -----------------------------------------
>      |   user    |   system  |   total
>  Case|-----------|-----------|-----------
>      | d-r | curl|  d-r| curl| d-r | curl
> -----|-----|-----|-----|-----|-----|-----
>   1  | 0.17| 0.14| 0.20| 0.32| 51.7| 52.2
>   2  | 0.19| 0.11| 0.15| 0.21| 51.8| 51.9
>   3  | 0.21| 0.15| 0.11| 0.15| 51.5| 52.1

Finally after all unnecessary memory movements were cleaned up, 
results for dlang-requests and curl almost equals.

           measured times, sec
  -----------------------------------------
       |   user    |   system  |   total
   Case|-----------|-----------|-----------
       | d-r | curl|  d-r| curl| d-r | curl
  -----|-----|-----|-----|-----|-----|-----
    1  | 0.14| 0.14| 0.15| 0.32| 53.3| 52.2
    2  | 0.13| 0.11| 0.11| 0.21| 51.1| 51.9
    3  | 0.18| 0.15| 0.08| 0.15| 51.2| 52.1

>
>
> import std.stdio;
> import requests;
>
> pragma(lib, "ssl");
> pragma(lib, "crypto");
>
> void main()
> {
>     auto sink = File("/dev/null", "wb");
>     auto rq = Request();
>     rq.useStreaming = true;
>     auto rs = 
> rq.get("http://127.0.0.1:8080/stream-bytes/51200000");
>     auto stream = rs.receiveAsRange();
>     while(!stream.empty) {
>         sink.rawWrite(stream.front);
>         stream.popFront;
>     }
> }




More information about the Digitalmars-d-announce mailing list