
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@475E=64@/@T*:6YL:6YE(&)O;VP@:7-?9G5L;"@@8V]N M<W0@475E=64F(&,@*0T*>PT*(" @(')E='5R;B!C+G-I>F4H*2 ]/2!Q=65U M95]S:7IE.PT*?0T*#0IT96UP;&%T93P@='EP96YA;64@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@.B!Q*'$I('L@?0T*(" @( T*(" @('9O M:60@;W!E<F%T;W(H*2@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@Z.G-C M;W!E9%]L;V-K(&QO8VLH(&UU=&5X("D[#0H@(" @(" @(" @(" @(" @(" @ M(%0@=" ]('$N8F%C:R@I.PT*(" @(" @(" @(" @(" @(" @("!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@475E=64Z.G9A;'5E7W1Y<&4@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@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@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@I#0I[#0H@(" @8V]U=" \/" B7&X@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@9&5Q=64\:6YT/CH@(CL- M"B @("!F:69O7W1E<W0\(&1E<75E/&EN=#X@/B@I.PT*#0H@(" @8V]U=" \ M/" B7&X@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@9&5Q=64\<W1R:6YG/CH@(CL-"B @("!F:69O7W1E<W0\ K(&1E<75E/'-T<FEN9SX@/B@I.PT*#0H@(" @<F5T=7)N(# [#0I]#0H-"@`` ` end