diff -r 4816d766a08a -r f345bda72bc4 Symbian3/PDK/Source/GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1.dita --- a/Symbian3/PDK/Source/GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1.dita Tue Mar 30 11:42:04 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1.dita Tue Mar 30 11:56:28 2010 +0100 @@ -1,63 +1,63 @@ - - - - - -Choices -with buffersExplains when to use dynamic buffers and whether to select flat -or segmented type of buffer. -

Dynamic buffers present two choices to potential users:

-
    -
  1. is it worth using dynamic -buffers at all?

  2. -
  3. if so, is it better -to use flat or segmented buffers?

  4. -
-
Dynamic buffers or other storage?

Use a more conventional -scheme, such as a descriptor if:

    -
  • the exact size of your -data is known at compile time, or in any case before the data begins to be -read into memory

  • -
  • the exact size is not -known, but its maximum limit is known, and that limit is sufficiently small -that it involves little waste

  • -
  • the functions you require -are provided by the descriptor classes

  • -

On the other hand, use dynamic buffers if:

    -
  • the exact size of your -data is not known and it’s possible that the data may grow significantly during -its lifetime

  • -
  • the class you are working -with requires the use of buffers — for example, the array classes derived -from CArrayFixBase, CArrayVarBase and CArrayPakBase use -buffers in their implementation.

  • -

The dynamic buffer classes are a general solution for requirements -such as these. In some quite specialised cases, the particular requirements -of the problem are more exacting than those met by dynamic buffers, and a -specialised buffer scheme may be necessary.

-
Flat or segmented buffers?

If dynamic buffers are -appropriate, use flat buffers if:

    -
  • efficiency in transforming -between buffer position and memory address is very important

  • -
  • the re-allocations needed -to extend the buffer are sufficiently rare that they do not cause intolerable -amounts of data copying or heap fragmentation

  • -
  • there is an upper bound -on the size limit, and can reserve sufficient room, using SetReserveL() before -inserting (this is typically followed by call to InsertL()).

  • -

On the other hand, use segmented buffers:

    -
  • to minimise the heap -thrashing and copying that can be associated with re-allocating a single flat -buffer

  • -
  • if there is a concern -about the performance of frequent insertions and deletions, which even without -much heap allocation, can be better with segmented buffers as not all data -after the insertion/deletion point needs to be shuffled to complete the operation.

  • -
+ + + + + +Choices +with buffersExplains when to use dynamic buffers and whether to select flat +or segmented type of buffer. +

Dynamic buffers present two choices to potential users:

+
    +
  1. is it worth using dynamic +buffers at all?

  2. +
  3. if so, is it better +to use flat or segmented buffers?

  4. +
+
Dynamic buffers or other storage?

Use a more conventional +scheme, such as a descriptor if:

    +
  • the exact size of your +data is known at compile time, or in any case before the data begins to be +read into memory

  • +
  • the exact size is not +known, but its maximum limit is known, and that limit is sufficiently small +that it involves little waste

  • +
  • the functions you require +are provided by the descriptor classes

  • +

On the other hand, use dynamic buffers if:

    +
  • the exact size of your +data is not known and it’s possible that the data may grow significantly during +its lifetime

  • +
  • the class you are working +with requires the use of buffers — for example, the array classes derived +from CArrayFixBase, CArrayVarBase and CArrayPakBase use +buffers in their implementation.

  • +

The dynamic buffer classes are a general solution for requirements +such as these. In some quite specialised cases, the particular requirements +of the problem are more exacting than those met by dynamic buffers, and a +specialised buffer scheme may be necessary.

+
Flat or segmented buffers?

If dynamic buffers are +appropriate, use flat buffers if:

    +
  • efficiency in transforming +between buffer position and memory address is very important

  • +
  • the re-allocations needed +to extend the buffer are sufficiently rare that they do not cause intolerable +amounts of data copying or heap fragmentation

  • +
  • there is an upper bound +on the size limit, and can reserve sufficient room, using SetReserveL() before +inserting (this is typically followed by call to InsertL()).

  • +

On the other hand, use segmented buffers:

    +
  • to minimise the heap +thrashing and copying that can be associated with re-allocating a single flat +buffer

  • +
  • if there is a concern +about the performance of frequent insertions and deletions, which even without +much heap allocation, can be better with segmented buffers as not all data +after the insertion/deletion point needs to be shuffled to complete the operation.

  • +
\ No newline at end of file