]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/fiber/doc/html/fiber/performance.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / fiber / doc / html / fiber / performance.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Performance</title>
5 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Fiber">
8 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Fiber">
9 <link rel="prev" href="integration/deeper_dive_into___boost_asio__.html" title="Deeper Dive into Boost.Asio">
10 <link rel="next" href="custom.html" title="Customization">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../more/index.htm">More</a></td>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="integration/deeper_dive_into___boost_asio__.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="custom.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
27 <a name="fiber.performance"></a><a class="link" href="performance.html" title="Performance">Performance</a>
28 </h2></div></div></div>
29 <p>
30 Performance measurements were taken using <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">highresolution_clock</span></code>,
31 with overhead corrections. The code was compiled using the build options: variant
32 = release, optimization = speed <sup>[<a name="fiber.performance.f0" href="#ftn.fiber.performance.f0" class="footnote">7</a>]</sup>.
33 </p>
34 <p>
35 The columns labeled <span class="bold"><strong>fiber (atomics)</strong></span> were compiled
36 with default fiber synchronization, capable of synchronizing fibers running
37 on different threads. The columns labeled <span class="bold"><strong>fiber (raw)</strong></span>
38 were compiled with <a class="link" href="overview.html#cross_thread_sync"><code class="computeroutput"><span class="identifier">BOOST_FIBERS_NO_ATOMICS</span></code></a>.
39 </p>
40 <div class="table">
41 <a name="fiber.performance.overhead_of_join__contains_fiber_context_destruction__fiber_stack_deallocation_"></a><p class="title"><b>Table&#160;1.1.&#160;Overhead of join (contains fiber-context destruction, fiber-stack deallocation)</b></p>
42 <div class="table-contents"><table class="table" summary="Overhead of join (contains fiber-context destruction, fiber-stack deallocation)">
43 <colgroup>
44 <col>
45 <col>
46 <col>
47 <col>
48 <col>
49 </colgroup>
50 <thead><tr>
51 <th>
52 <p>
53 thread
54 </p>
55 </th>
56 <th>
57 <p>
58 fiber (atomics)
59 </p>
60 </th>
61 <th>
62 <p>
63 fiber (raw)
64 </p>
65 </th>
66 <th>
67 <p>
68 tbb
69 </p>
70 </th>
71 <th>
72 <p>
73 qthread
74 </p>
75 </th>
76 </tr></thead>
77 <tbody><tr>
78 <td>
79 <p>
80 18 &#181;s
81 </p>
82 </td>
83 <td>
84 <p>
85 950 ns
86 </p>
87 </td>
88 <td>
89 <p>
90 900 ns
91 </p>
92 </td>
93 <td>
94 <p>
95 570 ns
96 </p>
97 </td>
98 <td>
99 <p>
100 620 ns
101 </p>
102 </td>
103 </tr></tbody>
104 </table></div>
105 </div>
106 <br class="table-break"><p>
107 (from <a href="../../../performance/fiber/overhead_join.cpp" target="_top">overhead_join.cpp</a>)
108 </p>
109 <div class="table">
110 <a name="fiber.performance.overhead_of_detach"></a><p class="title"><b>Table&#160;1.2.&#160;Overhead of detach</b></p>
111 <div class="table-contents"><table class="table" summary="Overhead of detach">
112 <colgroup>
113 <col>
114 <col>
115 <col>
116 </colgroup>
117 <thead><tr>
118 <th>
119 <p>
120 thread
121 </p>
122 </th>
123 <th>
124 <p>
125 fiber (atomics)
126 </p>
127 </th>
128 <th>
129 <p>
130 fiber (raw)
131 </p>
132 </th>
133 </tr></thead>
134 <tbody><tr>
135 <td>
136 <p>
137 126 ns
138 </p>
139 </td>
140 <td>
141 <p>
142 21 ns
143 </p>
144 </td>
145 <td>
146 <p>
147 20 ns
148 </p>
149 </td>
150 </tr></tbody>
151 </table></div>
152 </div>
153 <br class="table-break"><p>
154 (from <a href="../../../performance/fiber/overhead_detach.cpp" target="_top">overhead_detach.cpp</a>)
155 </p>
156 <div class="table">
157 <a name="fiber.performance.overhead_of_yield"></a><p class="title"><b>Table&#160;1.3.&#160;Overhead of yield</b></p>
158 <div class="table-contents"><table class="table" summary="Overhead of yield">
159 <colgroup>
160 <col>
161 <col>
162 <col>
163 </colgroup>
164 <thead><tr>
165 <th>
166 <p>
167 thread
168 </p>
169 </th>
170 <th>
171 <p>
172 fiber (atomics)
173 </p>
174 </th>
175 <th>
176 <p>
177 fiber (raw)
178 </p>
179 </th>
180 </tr></thead>
181 <tbody><tr>
182 <td>
183 <p>
184 1.5 &#181;s
185 </p>
186 </td>
187 <td>
188 <p>
189 310 ns
190 </p>
191 </td>
192 <td>
193 <p>
194 330 ns
195 </p>
196 </td>
197 </tr></tbody>
198 </table></div>
199 </div>
200 <br class="table-break"><p>
201 (from <a href="../../../performance/fiber/overhead_yield.cpp" target="_top">overhead_yield.cpp</a>)
202 </p>
203 <div class="table">
204 <a name="fiber.performance.overhead_of_waiting_on_a_future"></a><p class="title"><b>Table&#160;1.4.&#160;Overhead of waiting on a future</b></p>
205 <div class="table-contents"><table class="table" summary="Overhead of waiting on a future">
206 <colgroup>
207 <col>
208 <col>
209 <col>
210 </colgroup>
211 <thead><tr>
212 <th>
213 <p>
214 thread
215 </p>
216 </th>
217 <th>
218 <p>
219 fiber (atomics)
220 </p>
221 </th>
222 <th>
223 <p>
224 fiber (raw)
225 </p>
226 </th>
227 </tr></thead>
228 <tbody><tr>
229 <td>
230 <p>
231 16 &#181;s
232 </p>
233 </td>
234 <td>
235 <p>
236 1.40 &#181;s
237 </p>
238 </td>
239 <td>
240 <p>
241 1.38 &#181;s
242 </p>
243 </td>
244 </tr></tbody>
245 </table></div>
246 </div>
247 <br class="table-break"><p>
248 (from <a href="../../../performance/fiber/overhead_future.cpp" target="_top">overhead_future.cpp</a>)
249 </p>
250 <div class="table">
251 <a name="fiber.performance.overhead_of_fiber_creation__contains_fiber_stack_allocation_and_preparation__fiber_context_construction__scheduler_handling_"></a><p class="title"><b>Table&#160;1.5.&#160;Overhead of fiber creation (contains fiber-stack allocation and preparation,
252 fiber-context construction, scheduler handling)</b></p>
253 <div class="table-contents"><table class="table" summary="Overhead of fiber creation (contains fiber-stack allocation and preparation,
254 fiber-context construction, scheduler handling)">
255 <colgroup>
256 <col>
257 <col>
258 <col>
259 </colgroup>
260 <thead><tr>
261 <th>
262 <p>
263 thread
264 </p>
265 </th>
266 <th>
267 <p>
268 fiber (atomics)
269 </p>
270 </th>
271 <th>
272 <p>
273 fiber (raw)
274 </p>
275 </th>
276 </tr></thead>
277 <tbody><tr>
278 <td>
279 <p>
280 18 &#181;s
281 </p>
282 </td>
283 <td>
284 <p>
285 450 ns
286 </p>
287 </td>
288 <td>
289 <p>
290 445 ns
291 </p>
292 </td>
293 </tr></tbody>
294 </table></div>
295 </div>
296 <br class="table-break"><p>
297 (from <a href="../../../performance/fiber/overhead_create.cpp" target="_top">overhead_create.cpp</a>)
298 </p>
299 <div class="table">
300 <a name="fiber.performance.scaling_of_creating_and_joining"></a><p class="title"><b>Table&#160;1.6.&#160;Scaling of creating and joining</b></p>
301 <div class="table-contents"><table class="table" summary="Scaling of creating and joining">
302 <colgroup>
303 <col>
304 <col>
305 <col>
306 <col>
307 </colgroup>
308 <thead><tr>
309 <th>
310 <p>
311 average of
312 </p>
313 </th>
314 <th>
315 <p>
316 thread
317 </p>
318 </th>
319 <th>
320 <p>
321 fiber (atomics)
322 </p>
323 </th>
324 <th>
325 <p>
326 fiber (raw)
327 </p>
328 </th>
329 </tr></thead>
330 <tbody>
331 <tr>
332 <td>
333 <p>
334 10
335 </p>
336 </td>
337 <td>
338 <p>
339 8.21 &#181;s
340 </p>
341 </td>
342 <td>
343 <p>
344 1.96 &#181;s
345 </p>
346 </td>
347 <td>
348 <p>
349 1.85 &#181;s
350 </p>
351 </td>
352 </tr>
353 <tr>
354 <td>
355 <p>
356 50
357 </p>
358 </td>
359 <td>
360 <p>
361 6.67 &#181;s
362 </p>
363 </td>
364 <td>
365 <p>
366 1.40 &#181;s
367 </p>
368 </td>
369 <td>
370 <p>
371 1.27 &#181;s
372 </p>
373 </td>
374 </tr>
375 <tr>
376 <td>
377 <p>
378 100
379 </p>
380 </td>
381 <td>
382 <p>
383 6.79 &#181;s
384 </p>
385 </td>
386 <td>
387 <p>
388 1.84 &#181;s
389 </p>
390 </td>
391 <td>
392 <p>
393 1.81 &#181;s
394 </p>
395 </td>
396 </tr>
397 <tr>
398 <td>
399 <p>
400 500
401 </p>
402 </td>
403 <td>
404 <p>
405 8.25 &#181;s
406 </p>
407 </td>
408 <td>
409 <p>
410 1.13 &#181;s
411 </p>
412 </td>
413 <td>
414 <p>
415 1.10 &#181;s
416 </p>
417 </td>
418 </tr>
419 <tr>
420 <td>
421 <p>
422 1000
423 </p>
424 </td>
425 <td>
426 <p>
427 7.71 &#181;s
428 </p>
429 </td>
430 <td>
431 <p>
432 1.46 &#181;s
433 </p>
434 </td>
435 <td>
436 <p>
437 1.26 &#181;s
438 </p>
439 </td>
440 </tr>
441 <tr>
442 <td>
443 <p>
444 5000
445 </p>
446 </td>
447 <td>
448 <p>
449 5.67 &#181;s
450 </p>
451 </td>
452 <td>
453 <p>
454 2.11 &#181;s
455 </p>
456 </td>
457 <td>
458 <p>
459 1.90 &#181;s
460 </p>
461 </td>
462 </tr>
463 <tr>
464 <td>
465 <p>
466 10000
467 </p>
468 </td>
469 <td>
470 <p>
471 5.25 &#181;s
472 </p>
473 </td>
474 <td>
475 <p>
476 2.36 &#181;s
477 </p>
478 </td>
479 <td>
480 <p>
481 1.89 &#181;s
482 </p>
483 </td>
484 </tr>
485 </tbody>
486 </table></div>
487 </div>
488 <br class="table-break"><p>
489 (from <a href="../../../performance/fiber/scale_join.cpp" target="_top">scale_join.cpp</a>)
490 </p>
491 <p>
492 Numbers of the <a href="https://github.com/atemerev/skynet" target="_top">microbenchmark
493 <span class="emphasis"><em>syknet</em></span></a> from Alexander Temerev <sup>[<a name="fiber.performance.f1" href="#ftn.fiber.performance.f1" class="footnote">8</a>]</sup>:
494 </p>
495 <div class="table">
496 <a name="fiber.performance.performance_of_n_100000_actors_goroutines_fibers"></a><p class="title"><b>Table&#160;1.7.&#160;performance of N=100000 actors/goroutines/fibers</b></p>
497 <div class="table-contents"><table class="table" summary="performance of N=100000 actors/goroutines/fibers">
498 <colgroup>
499 <col>
500 <col>
501 <col>
502 <col>
503 <col>
504 </colgroup>
505 <thead><tr>
506 <th>
507 <p>
508 Haskell | stack-1.0.4
509 </p>
510 </th>
511 <th>
512 <p>
513 fiber (single threaded/raw) | gcc-5.2.1
514 </p>
515 </th>
516 <th>
517 <p>
518 fiber (single threaded/atomics) | gcc-5.2.1
519 </p>
520 </th>
521 <th>
522 <p>
523 Erlang | erts-7.0
524 </p>
525 </th>
526 <th>
527 <p>
528 Go | go1.4.2
529 </p>
530 </th>
531 </tr></thead>
532 <tbody><tr>
533 <td>
534 <p>
535 58ms - 108ms
536 </p>
537 </td>
538 <td>
539 <p>
540 205ms - 263ms
541 </p>
542 </td>
543 <td>
544 <p>
545 221ms - 278ms
546 </p>
547 </td>
548 <td>
549 <p>
550 237ms- 470ms
551 </p>
552 </td>
553 <td>
554 <p>
555 614ms - 883ms
556 </p>
557 </td>
558 </tr></tbody>
559 </table></div>
560 </div>
561 <br class="table-break"><div class="footnotes">
562 <br><hr width="100" align="left">
563 <div class="footnote"><p><sup>[<a name="ftn.fiber.performance.f0" href="#fiber.performance.f0" class="para">7</a>] </sup>
564 Intel Core2 Q6700, x86_64, 3GHz
565 </p></div>
566 <div class="footnote"><p><sup>[<a name="ftn.fiber.performance.f1" href="#fiber.performance.f1" class="para">8</a>] </sup>
567 Intel Core2 Q6700, x86_64, 3GHz
568 </p></div>
569 </div>
570 </div>
571 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
572 <td align="left"></td>
573 <td align="right"><div class="copyright-footer">Copyright &#169; 2013 Oliver Kowalke<p>
574 Distributed under the Boost Software License, Version 1.0. (See accompanying
575 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
576 </p>
577 </div></td>
578 </tr></table>
579 <hr>
580 <div class="spirit-nav">
581 <a accesskey="p" href="integration/deeper_dive_into___boost_asio__.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="custom.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
582 </div>
583 </body>
584 </html>