Boost logo

Boost :

From: Thorsten Ottosen (nesotto_at_[hidden])
Date: 2004-03-12 05:06:16


Hi All,

here is my review of the circular buffer class.

What is your evaluation of the design?
---------------------------------------

The design is good. People can easily learn to use it.
There are some miner things that I would like see changed, like double
versions of push_back and push_front. I don't
understand why both set_capacit and resize are provided and I would like to
see them merged if possible.

I also think push_back should throw an exception if no element is inserted.
This behavior is somewhat different push_back() from a
normal std container. If there are similar cases then I think they should be
looked at again too.

What is your evaluation of the implementation?
-----------------------------------------------
I haven't looked closely at the source code.

What is your evaluation of the documentation?
----------------------------------------------
very good once the exception-safety issues are solved

What is your evaluation of the potential usefulness of the library?
----------------------------------------------------------------
I'm in doubt. The library has efficiency as its hallmark. The rationale
says that it
gives efficient FIFO queue. So I tried to compare it with std::deque, and
here is my results
of an /O2 build with vc71:

$ ./cbuffer_vs_deque.exe

 circular_buffer<int>: 2.15 s

 deque<int>: 2.84 s

 circular_buffer<string>: 20.59 s

 deque<string>: 18.64 s

The test program is attached; I might have made an error, but if I have not,
then
I don't see the claim as true. In that case I need to see some more evidence
about why
the speed advantages should be so good. It also make me wonder if there is
any need for
circular_buffer_space_optimized.

Did you try to use the library? With what compiler? Did you have any
problems?
----------------------------------------------------------------------------
------
yes, with vc7.1; Comeau 4.3.0 could not compile it. It worked fine on vc7.1

How much effort did you put into your evaluation? A glance? A quick reading?
In-depth study?
----------------------------------------------------------------------------
-------------------
A couple of hours with both documentation and code use.

Are you knowledgeable about the problem domain?
-----------------------------------------------------
I don't have experience with embedded applications; I have written stuff in
which performace
was critical and in which specially designed datastructures was necessary.

Do you think the library should be accepted as a Boost library?
---------------------------------------------------------------

Yes if the author can convince me that we really get more performance.
No otherwise.

best regards

Thorsten

begin 666 cbuffer_vs_deque.cpp
M(V1E9FEN92!"3T]35%]$25-!0DQ%7T-"7T1%0E5'(#$-"@T*(VEN8VQU9&4@
M(F)O;W-T+V-I<F-U;&%R7V)U9F9E<BYH<' B#0HC:6YC;'5D92 \8F]O<W0O
M<')O9W)E<W,N:'!P/@T*(VEN8VQU9&4@/&)O;W-T+W1H<F5A9"]T:')E860N
M:'!P/@T*(VEN8VQU9&4@/&1E<75E/@T*(VEN8VQU9&4@/'-T<FEN9SX-"B-I
M;F-L=61E(#QI;W-T<F5A;3X-"@T*=7-I;F<@;F%M97-P86-E(&)O;W-T.PT*
M=7-I;F<@;F%M97-P86-E('-T9#L-"@T*;75T97@@<75E=65?;75T97@[#0IC
M;VYS="!I;G0@<75E=65?<VEZ92 @(" @/2 U,# [#0IC;VYS="!I;G0@=&]T
M86Q?96QE;65N=',@/2!Q=65U95]S:7IE("H@,3 P,# P.PT*#0IT96UP;&%T
M93P@='EP96YA;64_at_475E=64@/@T*:6YL:6YE(&)O;VP@:7-?9G5L;"@@8V]N
M<W0_at_475E=64F(&,@*0T*>PT*(" @(')E='5R;B!C+G-I>F4H*2 ]/2!Q=65U
M95]S:7IE.PT*?0T*#0IT96UP;&%T93P@='EP96YA;64_at_475E=64@/@T*8VQA
M<W,@<F5A9&5R#0I[#0H@(" @='EP961E9B!T>7!E;F%M92!1=65U93HZ=F%L
M=65?='EP92!4.PT*(" @(%%U975E)B @<3L-"B @(" -"G!U8FQI8SH-"B @
M("!R96%D97(H(%%U975E)B!Q("D_at_.B!Q*'$I('L@?0T*(" @( T*(" @('9O
M:60@;W!E<F%T;W(H*2_at_I#0H@(" @>PT*(" @(" @("!I;G0@<F5A9%]E;&5M
M96YT<R ](# [#0H@(" @(" @( T*(" @(" @("!W:&EL92@@<F5A9%]E;&5M
M96YT<R \('1O=&%L7V5L96UE;G1S("D@(" -"B @(" @(" @>PT*(" @(" @
M(" @(" @:68H("%Q+F5M<'1Y*"D@*2 @( T*(" @(" @(" @(" @>PT*(" @
M(" @(" @(" @(" @('L-"B @(" @(" @(" @(" @(" @(" @;75T97_at_Z.G-C
M;W!E9%]L;V-K(&QO8VLH(&UU=&5X("D[#0H@(" @(" @(" @(" @(" @(" @
M(%0@=" ]('$N8F%C:R_at_[hidden]*(" @(" @(" @(" @(" @(" @("!Q+G!O<%]B
M86-K*"D[#0H@(" @(" @(" @(" @(" @?0T*(" @(" @(" @(" @(" @("LK
M<F5A9%]E;&5M96YT<SL-"B @(" @(" @(" @('T-"B @(" @(" @(" @(&5L
M<V4-"B @(" @(" @(" @(" @("!R96%D7W1H<F5A9"@I+3YY:65L9"@I.PT*
M(" @(" @("!]#0H@(" @?0T*(" @( T*(" @('-T871I8R!T:')E860J)B!R
M96%D7W1H<F5A9"@I#0H@(" @>PT*(" @(" @("!S=&%T:6,@=&AR96%D*B!T
M(#T@,#L-"B @(" @(" @<F5T=7)N('0[#0H@(" @?0T*?3L-"@T*=&5M<&QA
M=&4\('1Y<&5N86UE(%%U975E(#X-"F-L87-S('=R:71E<@T*>PT*(" @('1Y
M<&5D968@='EP96YA;64_at_475E=64Z.G9A;'5E7W1Y<&4_at_5#L-"B @("!1=65U
M928@('$[#0H@(" @#0IP=6)L:6,Z#0H@(" @=W)I=&5R*"!1=65U928@<2 I
M(#H@<2AQ*2![('T-"B @(" -"B @("!V;VED(&]P97)A=&]R*"DH*0T*(" @
M('L-"B @(" @(" @:6YT('=R:71T96Y?96QE;65N=',@/2 P.PT*(" @(" @
M("!W:&EL92@@=W)I='1E;E]E;&5M96YT<R \('1O=&%L7V5L96UE;G1S("D-
M"B @(" @(" @>PT*(" @(" @(" @(" @:68H("%I<U]F=6QL*"!Q("D@*0T*
M(" @(" @(" @(" @>PT*(" @(" @(" @(" @(" @('L-"B @(" @(" @(" @
M(" @(" @(" @;75T97_at_Z.G-C;W!E9%]L;V-K(&QO8VLH(&UU=&5X("D[#0H@
M(" @(" @(" @(" @(" @(" @('$N<'5S:%]B86-K*"!4*"D@*3L-"B @(" @
M(" @(" @(" @("!]#0H@(" @(" @(" @(" @(" @*RMW<FET=&5N7V5L96UE
M;G1S.PT*(" @(" @(" @(" @?0T*(" @(" @(" @(" @96QS92 @(" -"B @
M(" @(" @(" @(" @("!W<FET95]T:')E860H*2T^>6EE;&0H*3L-"B @(" @
M(" @?0T*(" @('T-"B @(" @(" @#0H@(" @<W1A=&EC('1H<F5A9"HF('=R
M:71E7W1H<F5A9"@I#0H@(" @>PT*(" @(" @("!S=&%T:6,@=&AR96%D*B!T
M(#T@,#L-"B @(" @(" @<F5T=7)N('0[#0H@(" @?0T*?3L-"@T*#0IT96UP
M;&%T93P@='EP96YA;64_at_475E=64@/@T*=F]I9"!F:69O7W1E<W0H*0T*>PT*
M(" @('!R;V=R97-S7W1I;65R('0[#0H@(" @475E=64@('$H('%U975E7W-I
M>F4@*3L-"B @("!R96%D97(\475E=64^(')E861E<B@@<2 I.PT*(" @('=R
M:71E<CQ1=65U93X@=W)I=&5R*"!Q("D[(" @( T*(" @('1H<F5A9"!R96%D
M*"!R96%D97(@*3L-"B @("!T:')E860@=W)I=&4H('=R:71E<B I.PT*(" @
M(')E861E<BYR96%D7W1H<F5A9"@I(#T@)G)E860[#0H@(" @=W)I=&5R+G=R
M:71E7W1H<F5A9"@I(#T@)G=R:71E.PT*(" @(" @(" -"B @("!R96%D+FIO
M:6XH*3L-"B @("!W<FET92YJ;VEN*"D[(" @(" @(" @(" -"@T*?0T*#0II
M;G0@;6%I;B_at_I#0I[#0H@(" @8V]U=" \/" B7&X_at_8VER8W5L87)?8G5F9F5R
M/&EN=#XZ("([#0H@(" @9FEF;U]T97-T/"!C:7)C=6QA<E]B=69F97(\:6YT
M/B ^*"D[#0H@(" @#0H@(" @8V]U=" \/" B7&X_at_9&5Q=64\:6YT/CH@(CL-
M"B @("!F:69O7W1E<W0\(&1E<75E/&EN=#X@/B_at_[hidden]*#0H@(" @8V]U=" \
M/" B7&X_at_8VER8W5L87)?8G5F9F5R/'-T<FEN9SXZ("([#0H@(" @9FEF;U]T
M97-T/"!C:7)C=6QA<E]B=69F97(\<W1R:6YG/B ^*"D[#0H@(" @#0H@(" @
M8V]U=" \/" B7&X_at_9&5Q=64\<W1R:6YG/CH@(CL-"B @("!F:69O7W1E<W0\
K(&1E<75E/'-T<FEN9SX@/B_at_[hidden]*#0H@(" @<F5T=7)N(# [#0I]#0H-"@``
`
end


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk