initial commit
[m6w6/m6w6.github.io] / _posts / 2007-09-11-introducing-libcurls-multi-socket-api.md
1 ---
2 title: Introducing libcurls multi socket API
3 author: m6w6
4 tags:
5 - PHP
6 ---
7
8 So, finally a first beta of [pecl_http](http://pecl.php.net/package/pecl_http)
9 1.6 has been released.
10
11 This is the first version which supports [libcurl](http://curl.haxx.se/libcurl/)s
12 [multi socketAPI](http://curl.haxx.se/libcurl/c/curl_multi_socket.html) introduced in 7.16
13 through libevent.
14
15
16 Here's a not very impressive comparison of the performance of the traditional
17 multi API vs. the new multi socket API:
18 ```shell
19 mike@honeybadger:~/build/php-5.2-debug$ cli
20 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
21 -u http://honeybadger/empty.html
22
23 > 1.134667s
24
25 mike@honeybadger:~/build/php-5.2-debug$ cli
26 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
27 -u http://honeybadger/empty.html
28
29 > 1.151088s
30
31 mike@honeybadger:~/build/php-5.2-debug$ cli
32 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
33 -u http://honeybadger/empty.html
34
35 > 1.131867s
36
37 mike@honeybadger:~/build/php-5.2-debug$ cli
38 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
39 -u http://honeybadger/empty.html -e
40
41 > 0.993878s
42
43 mike@honeybadger:~/build/php-5.2-debug$ cli
44 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
45 -u http://honeybadger/empty.html -e
46
47 > 0.998832s
48
49 mike@honeybadger:~/build/php-5.2-debug$ cli
50 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
51 -u http://honeybadger/empty.html -e
52
53 > 0.997121s
54 ```
55
56 Above empty.html is, well, empty. The following test requests a 100k file:
57 ```shell
58 mike@honeybadger:~/build/php-5.2-debug$ cli
59 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
60 -u http://honeybadger/100k.bin
61
62 > 2.205190s
63
64 mike@honeybadger:~/build/php-5.2-debug$ cli
65 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
66 -u http://honeybadger/100k.bin
67
68 > 2.210525s
69
70 mike@honeybadger:~/build/php-5.2-debug$ cli
71 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
72 -u http://honeybadger/100k.bin
73
74 > 2.254281s
75
76 mike@honeybadger:~/build/php-5.2-debug$ cli
77 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
78 -u http://honeybadger/100k.bin -e
79
80 > 2.007220s
81
82 mike@honeybadger:~/build/php-5.2-debug$ cli
83 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
84 -u http://honeybadger/100k.bin -e
85
86 > 1.945564s
87
88 mike@honeybadger:~/build/php-5.2-debug$ cli
89 ~/cvs/pecl/http/scripts/bench_select_vs_event.php
90 -u http://honeybadger/100k.bin -e
91
92 > 1.969575s
93 ```
94
95 So, apparently time savings are not huge, but noticable.
96