todo.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!--
  4. (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
  5. Use, modification and distribution is subject to the Boost Software
  6. License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  7. http://www.boost.org/LICENSE_1_0.txt)
  8. -->
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11. <link rel="stylesheet" type="text/css" href="../../../boost.css">
  12. <link rel="stylesheet" type="text/css" href="style.css">
  13. <title>Serialization - To Do</title>
  14. </head>
  15. <body link="#0000ff" vlink="#800080">
  16. <table border="0" cellpadding="7" cellspacing="0" width="100%" summary="header">
  17. <tr>
  18. <td valign="top" width="300">
  19. <h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../boost.png" border="0"></a></h3>
  20. </td>
  21. <td valign="top">
  22. <h1 align="center">Serialization</h1>
  23. <h2 align="center">To Do</h2>
  24. </td>
  25. </tr>
  26. </table>
  27. <hr>
  28. <dl class="index">
  29. <dt><a href="#portablebinaryarchives">Portable Binary Archives</a></dt>
  30. <dt><a href="#performancetesting">Performance Testing and Profiling</a></dt>
  31. <dt><a href="#backversioning">Back Versioning</a></dt>
  32. <dt><a href="#nortti">Testing for Environments with No RTTI</a></dt>
  33. <dt><a href="new_case_studies.html">Additional Case Studies</a></dt>
  34. </dl>
  35. These are enhancements that the serialization library needs but have not been done.
  36. Some of these projects, though tricky, are not huge and would be suitable
  37. for someone who has a limited time to spend on them. In particular, they
  38. might be of interest as student projects such as the Google Summer of Code.
  39. <h2><a name="portablebinaryarchives"></a>Portable Binary Archives</h2>
  40. Currently there is a portable binary archive in the examples directory.
  41. It is not regularly submitted to the exhaustive boost testing regimen
  42. but it is tested occasionally and has been used in production code.
  43. <p>
  44. It's missing the following:
  45. <ul>
  46. <li>Addition of portable floating point types. This is not trivial. In addition to
  47. handling floating point types of varying sizes, It requires
  48. handling invalid floating point numbers (NaNs) in a portable manner.
  49. <li>Integration into the Boost testing regimen similar to the other archive classes.
  50. </ul>
  51. <h2><a name="performancetesting"></a>Performance Testing and Profiling</h2>
  52. I've managed to setup performance profiling using the following:
  53. <ul>
  54. <li>current (as I write this) Boost.Build tools.
  55. <li>the gcc compiler.
  56. <li>and a shell script - profile.sh
  57. <li>library_status program from the tools/regression/src directory
  58. </ul>
  59. Invoking profile script produces a
  60. <a href="performance_status.html">table</a>
  61. which shows the results of each test and links to the actual
  62. profile.
  63. <p>
  64. The first thing I did was include some of the serialization library tests.
  65. It became immediately apparent that these tests were totally unsuitable
  66. for performance testing and that new tests needed to be written for this
  67. purpose. These tests would highlight the location of any performance
  68. bottlenecks in the serialization library. Whenever I've subjected my
  69. code in the past to this type of analysis, I've always been surprised
  70. to find bottlenecks in totally unanticipated places and fixing those
  71. has always led to large improvements in performance. I expect that
  72. this project would have a huge impact on the utility of the serialization
  73. library.
  74. <h2><a name="backversioning"></a>Back Versioning</h2>
  75. It has been suggested that a useful feature of the library would be
  76. the ability to create "older versions" of archives. Currently,
  77. the library permits one to make programs that are guaranteed
  78. the ability to load archives with classes of a previous version.
  79. But there is no way to save classes in accordance with a
  80. previous version. At first I dismissed this as a huge project
  81. with small demand. A cursory examination of the code revealed
  82. that this would not be very difficult. It would require some
  83. small changes in code and some additional tests. Also it
  84. would require special treatment in the documentation - perhaps
  85. a case study.
  86. <h2><a name="nortti"></a>Environments without RTTI</h2>
  87. I note that some have commented that this library requires RTTI.
  88. This is not strictly true. The examples and almost all the
  89. tests presume the existence of RTTI. But it should be possible
  90. to use the library without it. The example used for testing is an
  91. <code style="white-space: normal">extended_typeinfo</code>
  92. implemenation which presumes that all classes names have been exported.
  93. So, to make this library compatible for platforms without RTTI,
  94. a set of tests, examples and new manual section would have to be created.
  95. <hr>
  96. <p>Revised 1 November, 2008
  97. <p><i>&copy; Copyright <a href="http://www.rrsd.com">Robert Ramey</a> 2002-2008.
  98. Distributed under the Boost Software License, Version 1.0. (See
  99. accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  100. </i></p>
  101. </body>
  102. </html>