<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>h_rain</title>
    <description>http://cang.baidu.com/h_rain 
是我的收藏.

因为太笨，所以只能现用什么现学什么...</description>
    <link>http://h-rain.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>对Berkeley DB的性能进行的部分测试</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/176415" style="color:red;">http://h-rain.javaeye.com/blog/176415</a>&nbsp;
          发表时间: 2008年03月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体">&nbsp; </span></span><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">零&nbsp;环境说明:</span> </span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; <span style="font-size: small">所有的数据插入的都是Key=int,Value=int,在循环中递增的.</span></span> </span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; <span style="font-size: small">本机NTFS的默认簇大小为4K.</span></span> </span></span></span></span></span></span></div><div class="Section0"><span style="font-size: 10.5pt; font-family: '宋体'"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体"><span style="font-family: 宋体"><span style="font-size: small">&nbsp;&nbsp;&nbsp; <span style="font-size: x-small; font-family: 宋体"><span style="font-size: small">本机配置仅仅影响绝对值.相对值是可比较的:</span></span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.5pt; font-family: '宋体'"><span style="font-size: small">OS=WinXP&nbsp;SP2;RAM=1G;CPU=AMD&nbsp;Athlon&nbsp;64&nbsp;X2&nbsp;Dual&nbsp;5000+;Disk=160G</span>&nbsp;</span> </span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; <span style="font-size: small">测试的实际数据量为:300*10000*2*sizeof(int)/1024/1024~=22.89MByte</span></span> </span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; <span style="font-size: small">下面所有的测试结果的单位都是秒.</span></span> </span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; <span style="font-size: small">编译器:</span></span><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">C++&nbsp;builder&nbsp;6.0(使用bcb编译BDB源码,形成LIB库后,直接链接到测试程序中.没有测试DLL的形式.)</span> </span></span></span></span></span></span></span></div><div class="Section0"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: x-small; font-family: 宋体">&nbsp;&nbsp;&nbsp; <span style="font-size: small; font-family: 宋体">BDB版本:4.6.21.NC</span></span></span></span></span></span></span></span></span></div><p class="0" style="layout-grid-mode: char; text-indent: 21pt">&nbsp;</p><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small">&nbsp;<span style="font-size: 10.5pt; font-family: '宋体'">一&nbsp;测试页尺寸对读写性能的影响:</span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 记录数量</span> <span style="font-size: 10.5pt; font-family: '宋体'">=300万&nbsp;缓存尺寸=0M</span> </span></span></span></span></div><div class="Section0"><table border="0" style="margin-left: 6.85pt; margin-right: 6.85pt; border-collapse: collapse"><tbody><tr><td valign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0pt; width: 82.5pt; padding-top: 0pt; border: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">读写\页尺寸</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">1K</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">2K</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4K</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">8K</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">16K</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">32K</span> </span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 82.5pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">B+写</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">94.94</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">84.83</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">82.73</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">97.16</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">142.67</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">232.11</span></span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 82.5pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">HASH写</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">346.16</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">320.41</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">288.36</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">295.19</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">599.66</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">867.03</span></span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 82.5pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">B+读</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4.22</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4.06</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">3.86</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">3.91</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">3.80</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">3.78</span></span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 82.5pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">HASH读</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">8.25</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">7.94</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.42</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.41</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4.99</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 82.55pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="110"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4.88</span></span></span></span></span></td></tr></tbody></table></div><p class="0" style="layout-grid-mode: char; text-indent: 21pt"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">结论:页尺寸与文件系统的簇大小相同时,写入性能最佳,读取性能中等.</span> </span></span></span></span></p><p class="0" style="layout-grid-mode: char; text-indent: 21pt">在0M缓存的时候,B+的性能要比HASH好得多.</p><p class="0" style="layout-grid-mode: char; text-indent: 21pt">&nbsp;</p><p class="0" style="layout-grid-mode: char; text-indent: 21pt">&nbsp;</p><div class="Section0"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体">&nbsp;<span style="font-size: 10.5pt; font-family: '宋体'">二&nbsp;测试cache缓存大小对读写性能的影响:</span> </span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 记录数量=300万&nbsp;&nbsp;页尺寸=4K&nbsp;&nbsp;&nbsp;真实数据量=22.89MByte&nbsp;数据库文件大小=80M</span> </span></span></span></span></div><div class="Section0"><table border="0" align="center" style="border-collapse: collapse"><tbody><tr><td valign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0pt; width: 72.2pt; padding-top: 0pt; border: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">读写\缓存</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">0M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">10M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">20M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">40M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">80M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">160M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">320M</span> </span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">B+写</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">85.06</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">88.66</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">133.31</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">164.81</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">15.31</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">15.34</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">15.27</span></span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">HASH写</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">292.91</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">224.47</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">180.76</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">95.28</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">20.11</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">20.06</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">20.05</span> </span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">B+读</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">3.98</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4.17</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">4.86</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">9.56</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">3.83</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">3.81</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">3.80</span>&nbsp;</span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">HASH读</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.53</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.83</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.2pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.83</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">8.16</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">5.20</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.08</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 72.25pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="96"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">5.16</span></span></span></span></span></td></tr></tbody></table></div><p class="0" style="layout-grid-mode: char; text-indent: 21pt">&nbsp;</p><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 记录数量=600万&nbsp;&nbsp;页尺寸=4K&nbsp;&nbsp;&nbsp;真实数据量=45.78MByte&nbsp;数据库文件大小=160M</span> </span></span></span></span></div><div class="Section0"><table border="0" align="center" style="border-collapse: collapse"><tbody><tr><td valign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0pt; width: 96.3pt; padding-top: 0pt; border: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">读写\缓存</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">0M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">40M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">80M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">160M</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: #000000 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">320M</span> </span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">B+写</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">259.39</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">1198.27</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">1017.94</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #000080; font-family: '宋体'">34.59</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">34.30</span>&nbsp;</span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">HASH写</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">1889.32</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">1279.95</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">563.12</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">40.67</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">40.89</span> </span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">B+读</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">7.89</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">14.02</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">22.84</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #000080; font-family: '宋体'">7.97</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">8.03</span>&nbsp;</span></span></span></span></td></tr><tr><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: #000000 0.5pt solid; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">HASH读</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">11.17</span>&nbsp;</span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">16.81</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">11.66</span></span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; color: #0000ff; font-family: '宋体'">10.39</span> </span></span></span></span></td><td valign="top" style="border-right: #000000 0.5pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0pt; border-left: medium none; width: 96.3pt; padding-top: 0pt; border-bottom: #000000 0.5pt solid" width="128"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-size: 10.5pt; font-family: '宋体'">10.88</span> </span></span></span></span></td></tr></tbody></table></div><p class="0" style="layout-grid-mode: char; text-indent: 21pt">&nbsp;</p><div class="Section0"><span style="font-size: 10.5pt; font-family: '宋体'"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: small; font-family: 宋体">结论:</span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 对于缓存大于数据库文件尺寸的时候,没有太多可说的,操作都在内存中,速度非常快.</span>&nbsp;<span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;</span></span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 对于大数据量的读取,两组对比都比较清晰的说明了一点:缓存的大小对读取记录的性能影响不是很大.</span></span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"></span></span></span></span></span></span><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 对于大数据量的写入,缓存对性能的影响就非常可观了,基本可以肯定的是,HASH库缓存越大写入速度越快.</span>&nbsp;<span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;而奇怪的是,B+库在缓存不足的时候,性能反而比0缓存时还要差很多!!</span></span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; 总的来说,在我的这些测试中,B+与HASH数据库的性能差异很大.</span></span></span></span></span></span></span></div><div class="Section0"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"></span></span></span></span></span></span><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: x-small"><span style="font-family: 宋体"><span style="font-size: small"><span style="font-size: 10.5pt; font-family: '宋体'">&nbsp;&nbsp;&nbsp; <span>对于缓存大于物理内存的情况未做测试,估计对性能不会有好的影响,毕竟在这种情况下,效率的瓶颈都是在磁盘的IO上.</span></span><span> </span></span></span></span></span></span></span></div><div class="Section0"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: small; font-family: 宋体">测试的核心代码如下:</span></span></span></div><div class="Section0"><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体">&nbsp;</span></span><span style="font-size: x-small; font-family: 宋体"><span style="font-size: x-small; font-family: 宋体"><pre name="code" class="cpp">#include &lt;db_cxx.h&gt;
#define	DATABASE	&quot;access.db&quot;
//tcount=记录数为多少万次,DbType=数据库类型,psize=页尺寸K,csize=缓存尺寸M
void run(int tcount,DBTYPE DbType,size_t psize,size_t csize)
{
	remove(DATABASE);
	Db db(0, 0);

	db.set_errpfx(&quot;AccessExample&quot;);
	db.set_pagesize(1024*psize);
	db.set_cachesize(0, 1024*1024*csize, 0);
	db.open(NULL, DATABASE, NULL, DbType, DB_CREATE|DB_THREAD, 0664);

    int testcount=10000*tcount;
    size_t tick1=GetTickCount();
	for (int i=0;i&lt;testcount;i++)
    {
		Dbt key(&amp;i,sizeof(int));
		Dbt data(&amp;i,sizeof(int));
		db.put(0, &amp;key, &amp;data, DB_NOOVERWRITE);
    }
    
    printf(&quot;插入结束 %d 万记录,全部用时:%.2f秒\r\n&quot;,tcount,(GetTickCount()-tick1)/(float)1000);
    tick1=GetTickCount();
	try
    {
		Dbc *dbcp;
		db.cursor(NULL, &amp;dbcp, 0);
		Dbt key;
		Dbt data;
		while (dbcp-&gt;get(&amp;key, &amp;data, DB_NEXT) == 0)
        {
			key.get_data();
			data.get_data();
		}
		dbcp-&gt;close();
        printf(&quot;遍历结束 %d 万记录,全部用时:%.2f秒\r\n&quot;,tcount,(GetTickCount()-tick1)/(float)1000);
        db.sync(0);
	}
	catch (DbException &amp;dbe) {}
	db.close(0);
}
</pre>&nbsp;&nbsp;</span></span></div><!--EndFragment-->
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/176415#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Mar 2008 17:01:05 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/176415</link>
        <guid>http://h-rain.javaeye.com/blog/176415</guid>
      </item>
      <item>
        <title>关于一些中文分词器</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/169896" style="color:red;">http://h-rain.javaeye.com/blog/169896</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          找了一些,列出来,备忘.部分内容来自<a href="http://lihaiyan.javaeye.com/blog/127674" target="_blank">http://lihaiyan.javaeye.com/blog/127674</a><br /><br />    <strong>1 计算所汉语词法分析系统 ICTCLAS</strong><br />    中国科学院计算技术研究所在多年研究基础上，耗时一年研制出了基于多层隐马模型的汉语词法分析系统 ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System)，该系统的功能有：中文分词；词性标注；未登录词识别。分词正确率高达97.58%(最近的973专家组评测结果)，基于角色标注的未登录词识别能取得高于90%召回率，其中中国人名的识别召回率接近98%，分词和词性标注处理速度为31.5KB/s。ICTCLAS 和计算所其他14项免费发布的成果被中外媒体广泛地报道，国内很多免费的中文分词模块都或多或少的参考过ICTCLAS的代码。<br /><br />下载页面： <a href="http://www.nlp.org.cn/project/project.php?proj_id=6" target="_blank">http://www.nlp.org.cn/project/project.php?proj_id=6</a><br /><br />由于 ICTCLAS 是由 C 语言写成的，现在主流的开发工具用起来不太方便，于是有一些热心的程序员把 ICTCLAS 改为 Java 和 C# 等其他语言。<br /><br />（1）fenci，Java 的 ICTCLAS，下载页面： <a href="http://www.xml.org.cn/printpage.asp?BoardID=2&id=11502" target="_blank">http://www.xml.org.cn/printpage.asp?BoardID=2&id=11502</a><br /><br />（2）AutoSplit，另一个 Java 的 ICTCLAS，已经找不到下载页面，点击<a href="http://www.myic.cn/blog/uploadfile/autosplit.rar" target="_blank">本地下载</a><br /><br />（3）小叮咚中文分词，曾经有下载页面，现在找不到了。据作者介绍，从 ICTCLAS 中改进，有 Java，C# 和 C++ 三个版本，介绍页面： <a href="http://www.donews.net/accesine" target="_blank">http://www.donews.net/accesine</a><br /><br />    <strong>2 海量智能分词研究版</strong><br /><br />    海量智能计算技术研究中心为了使中文信息处理领域的研究者们能够共同分享海量智能中心的研究成果，共同提高中文信息处理水平，特此发布《海量智能分词研究版》，供专家、学者和爱好者进行研究。<br /><br />下载页面： <a href="http://www.hylanda.com/cgi-bin/download/download.asp?id=8" target="_blank">http://www.hylanda.com/cgi-bin/download/download.asp?id=8</a><br /><br /><br />    <strong>3 CSW中文智能分词组件</strong><br /><br />    运行环境：Windows NT、2000、XP 或更高，可以在 ASP，VB 等微软的开发语言中调用。<br /><br />简介: CSW中文智能分词DLL组件，可将一段文本自动的按常规汉语词组进行拆分,并以指定方式进行分隔，且可对其拆分后的词组进行语义、词频标注。其广范应用于各行各业的信息资料检索、分析。<br /><br />下载页面： <a href="http://www.vgoogle.net/" target="_blank">http://www.vgoogle.net/</a><br /><br />    <strong>4 C# 写的中文分词组件</strong><br /><br />据作者介绍，一个 DLL 文件，可以做中英文分词组件。完全C#托管代码编写，独立开发。<br /><br />下载页面： <a href="http://www.rainsts.net/article.asp?id=48" target="_blank">http://www.rainsts.net/article.asp?id=48</a><br /><br />    <strong>5 (C) scws-1.0.0 正式发布 (含php扩展及2文本词典)</strong> <a href="http://www.hightman.cn/" target="_blank">http://www.hightman.cn/</a><br /><br /><br />    <strong>6 MMSeg Java开源实现</strong><a href="http://www.solol.org/projects/mmseg/" target="_blank">http://www.solol.org/projects/mmseg/</a><br /><br /><br />    <strong>7 小麻雀搜索引擎</strong><a href="http://www.sqlet.com/" target="_blank">http://www.sqlet.com/</a><br /><br />    <strong>8 (C#) 开源 ShootSearch 分词组件 1.0 bate 070312</strong> (支持dotlucene)<a href="http://www.shootsoft.net/home/show.aspx?id=38&cid=8" target="_blank">http://www.shootsoft.net/home/show.aspx?id=38&cid=8</a><br /><br />    <strong>9 (Java) Paoding Analysis(庖丁解牛)</strong><a href="http://code.google.com/p/paoding/" target="_blank">http://code.google.com/p/paoding/</a><br /><br />    <strong>10 (Java) lucene开源中文分词器 IKAnalyzer2.0.2 共享及源码发布</strong><a href="http://linliangyi2007.javaeye.com/blog/165287" target="_blank">http://linliangyi2007.javaeye.com/blog/165287</a><br /><br />    <strong>11 (ruby) RMMSeg</strong> <a href="http://pluskid.lifegoo.com/?p=261" target="_blank">作者</a>,<a href="http://www.javaeye.com/news/1380" target="_blank">一些介绍</a><br />根据作者自己博客上面的测试，中文分词的准确率可以达到98%以上.应该是MMSEG的Ruby实现.<br />   <br />    <strong>12 (C) MMSEG</strong><a href="http://technology.chtsai.org/mmseg/" target="_blank">http://technology.chtsai.org/mmseg/</a><br /><br />    <strong>13 (C++)FirteX 是一个功能强大、高性能、灵活的全文索引和检索平台</strong><a href="http://www.firtex.org/" target="_blank">http://www.firtex.org/</a><br /><br /><br />    其他:<br />    搜索引擎资料收集(转)<a href="http://wind-bell.javaeye.com/blog/81504" target="_blank">http://wind-bell.javaeye.com/blog/81504</a><br />    几个免费的中文分词模块<a href="http://lihaiyan.javaeye.com/blog/127674" target="_blank">http://lihaiyan.javaeye.com/blog/127674</a><br />    开源研究,中文分词<a href="http://www.j-kanban.com/bbs/thread-1806-1-1.html" target="_blank">http://www.j-kanban.com/bbs/thread-1806-1-1.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/169896#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 16:35:36 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/169896</link>
        <guid>http://h-rain.javaeye.com/blog/169896</guid>
      </item>
      <item>
        <title>使用Dxpcom进行HTML文本的DOM解析</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/75129" style="color:red;">http://h-rain.javaeye.com/blog/75129</a>&nbsp;
          发表时间: 2007年04月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          开帖纪念,dxpcom终于可以使用了.<br />    找了好半天,才知道怎么使用mozilla xpcom进行HTML的DOM解析.<br />    解析使用的组件是"@mozilla.org/xmlextras/domparser;1",可以解析HTML和XML.解析使用的接口是nsIDOMParser.<br />    代码如下,保存时要注意为UTF-8格式,不然无法用DMD编译.<br /><pre name="code" class="cpp">
import mozilla.xpcom.nsXPCOM;
import mozilla.xpcom.nsIDOMParser;
import mozilla.xpcom.nsIComponentManager;
import mozilla.xpcom.nsIDOMDocument;
import mozilla.xpcom.nsIDOMHTMLDocument;
import mozilla.xpcom.nsISupports;
import mozilla.dxpcom.StringAPI;
import mozilla.dxpcom.QueryInterface;
import std.string;
import std.stdio;

void main(char[][] args)
{
    //定义xpcom组件管理器接口
	nsIComponentManager componentManager;
	nsresult result;
    //定义一个临时使用的空串
    AString tStr=new AString();

	//初始化xpcom环境
	result = NS_InitXPCOM2(null, null, null);
	assert(result==0);

	//得到xpcom组件管理端接口
	result = NS_GetComponentManager(&componentManager);
    assert(result==0);

    //定义DOM解析器接口
	nsIDOMParser DOMParser;

	//使用xpcom组件管理端,从指定的组件中得到指定的接口
	result = componentManager.CreateInstanceByContractID("@mozilla.org/xmlextras/domparser;1",null,
		&nsIDOMParser.IID,cast(void**)&DOMParser);
    assert(result==0);

    //定义待解析的HTML文本串
	PRUnichar HtmlStr[]=r"&lt;html>&lt;head>&lt;title>test_title&lt;/title>&lt;/head>&lt;body>&lt;al>test&lt;/al>&lt;/body>&lt;/html>"w;

    //定义DOM文档对象接口
	nsIDOMDocument DOMDoc;

    //使用DOM解析接口解析html文本串,得到DOM文档对象接口
    result=DOMParser.ParseFromString(cast(PRUnichar*)HtmlStr,"application/xhtml+xml",&DOMDoc);
    assert(result==0);
    DOMParser.Release();

    /*
    //得到文档的类型
    nsIDOMDocumentType DocType;
    result=DOMDoc.GetName(&DocType);
    assert(result==0);
    result=DocType.GetInternalSubset(cast(nsAString*)tStr);
    assert(result==0);
    writefln("Doc Type=: %s", tStr.GetString());*/

    //定义DOM节点列表接口
    nsIDOMNodeList NodeList;

    //定义待解析得到的节点的名字
    AString TagName = new AString("title"w);
    //解析得到节点列表
    result=DOMDoc.GetElementsByTagName(cast(nsAString*)TagName,&NodeList);
    assert(result==0);

    //定义DOM节点接口
    nsIDOMNode Node;
    uint Len=0;

    //判断节点列表是否为空
    result=NodeList.GetLength(&Len);
    assert(result==0&&Len!=0);

    //从节点列表中得到一个节点
    result=NodeList.Item(0,&Node);
    assert(result==0);
    NodeList.Release();

    //得到这个节点的名字
    result=Node.GetNodeName(cast(nsAString*)tStr);
    assert(result==0);

    //显示这个节点的名字
    wchar wStr[]=tStr.GetString();
    Len=wStr.length;
	writefln("Node Name =: %s", wStr);

    //再定义一个节点接口,用于表示子节点
    nsIDOMNode cNode;

    //得到这个节点的子节点
    result=Node.GetFirstChild(&cNode);
    assert(result==0);


    //得到子节点的值
    result=cNode.GetNodeValue(cast(nsAString*)tStr);
    assert(result==0);
    cNode.Release();

    //显示这个子节点的值
    wStr=tStr.GetString();
    writefln("Node Value=: %s", wStr);

    //释放所有用过的接口
    Node.Release();
    DOMDoc.Release();
    componentManager.Release();
    //关闭xpcom环境
	result = NS_ShutdownXPCOM(null);
	assert(result==0);
}


</pre><br /><br />看上去好像很繁琐,但等D的异常风格包装完事后,会好看的多!<br /><br />再次对qiezi的工作表示敬意!为我们提供了在D中使用xpcom的可能!<br />:)<br /><br />其他不明的相关事宜,请大家讨论.<br /><br />这次修改,加入了Release调用.<br /><br />最终的运行结果是:<br /><pre name="code" class="java">Node Name =: title
Node Value=: test_title</pre>
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/75129#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Apr 2007 17:11:58 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/75129</link>
        <guid>http://h-rain.javaeye.com/blog/75129</guid>
      </item>
      <item>
        <title>深入分析D语言接口与COM接口的关系</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/73268" style="color:red;">http://h-rain.javaeye.com/blog/73268</a>&nbsp;
          发表时间: 2007年04月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          前两天为了解决dxpcom项目中遇到的xpcom接口兼容性问题，看了一下DMD编译器的源码，对D的接口有了一些了解，现在总结出来，备忘。<br /><br />    D中有了专门用于标识接口的关键字interface，而不用象C++中使用抽象类来代替。<br />    D代码:<br /><pre name="code" class="java">interface ITest
{
int test();
}</pre><br />    C++代码：<br /><pre name="code" class="java">class ITest
{
int test()=0;
}</pre><br /><br />    而D中的接口与C++中的接口不同之处是，D中的接口仍然含有ClassInfo，存放在虚表的0项上。<br /><br />    从DMD的源码中可以得知，D中的类，接口都在虚表的0项上保存了ClassInfo指针。<br />    这样，D中的接口是无法与C++接口兼容的，则D就无法调用Windows的COM对象，至少是无法“优雅”的调用（仍然可以使用struct进行二进制兼容代替）。<br /><br />    为了解决这个问题，DMD就需要能够表示出与C++兼容的COM接口，即需要一个虚表是"干净"的接口。又由于，从一个COM接口继承的接口仍然是一个COM接口，而COM模型的实现上又恰好定义了一个“IUnknown”根接口(COM体系中的所有的接口都是继承了IUnknown)。<br /><br />    所以，出于简单实现的原则，DMD区分一个接口是D接口还是COM接口，关键就是判断这个接口是不是叫做IUnknown，以及这个接口是否继承自IUnknown,虽然接口都是通过Interface关键字声明。更有趣的是，DMD仅仅判断接口的名字是否为"IUnknown"而根本不管接口中的方法如何定义。<br /><br />    以上所述内容在进行Windows COM编程时，几乎不会被察觉，因为Windows的所有接口都是继承自IUnknown，只要正常使用就可以了。<br /><br />    而在进行Mozilla xpcom编程的时候，xpcom的根接口叫做ISupports,DMD根本就不会认为这是需要编译为C++兼容的COM接口，而仍然会将虚表的0项进行保留，结果给使用者造成了虚表指针偏移了的印象。<br /><br />    基于D的这个识别COM接口的方式，在dxpcom项目中，qiezi使用了别名的方式进行了变换，既将dxpcom项目中的所有的接口名称进行了优雅的统一，又能够使DMD生成正确的COM接口：<br /><pre name="code" class="java">extern(Windows)
interface IUnknown {
  static const char[] IID_STR = NS_ISUPPORTS_IID_STR;
  static const nsIID IID = NS_ISUPPORTS_IID;

  /* void QueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result); */
  nsresult QueryInterface(nsIID * uuid, void * *result);

  /* [noscript, notxpcom] nsrefcnt AddRef (); */
  nsrefcnt AddRef();

  /* [noscript, notxpcom] nsrefcnt Release (); */
  nsrefcnt Release();

}

alias IUnknown nsISupports;</pre><br /><br />   这个现象同时也很好的说明了，D中的别名（alias）在符号的处理方面仅仅是一个符号的替换，同C/C++中的#define的作用相同。<br /><br />    下面的两段代码就能很好的诠释本文的内容(感谢qiezi提供)<br /><br />    代码一，无法通过运行期断言，因为接口IInterface仍然为标准D接口，虚表的0项为ClassInfo指针无法被显示的调用，在执行的结果中就表现为虚表进行了偏移。<br /><pre name="code" class="java">extern(Windows):   
int test1(IInterface p)   
{   
    return 1;   
}   
  
int test2(IInterface p)   
{   
    return 2;   
}   
  
int test3(IInterface p)   
{   
    return 3;   
}   
  
struct InterfaceVtbl   
{   
extern(Windows):   
    int function(IInterface) test1;   
    int function(IInterface) test2;   
    int function(IInterface) test3;   
}   
  
struct Interface   
{   
    InterfaceVtbl* vtbl;   
  
    InterfaceVtbl vtbl_;   
  
    static Interface opCall()   
    {   
        Interface res;   
        res.vtbl_.test1 = &test1;   
        res.vtbl_.test2 = &test2;   
        res.vtbl_.test3 = &test3;   
        res.vtbl = &res.vtbl_;   
        return res;   
    }   
}   
  
interface IInterface   
{   
    int test1();   
    int test2();   
    int test3();   
}   
  
extern (D):   
  
void main()   
{   
    Interface i = Interface();   
    assert(i.vtbl.test1(cast(IInterface)&i) == 1);   
    assert(i.vtbl.test2(cast(IInterface)&i) == 2);   
    assert(i.vtbl.test3(cast(IInterface)&i) == 3);   
  
    IInterface ii = cast(IInterface)&i;   
    assert(ii.test1() == 1);   
    assert(ii.test2() == 2);   
    assert(ii.test3() == 3);   
}</pre><br /><br />    代码二，与代码一的结构完全一致，却能够通过运行时断言的检查。唯一的不同仅仅是IInterface的名字换成了IUnknown!!<br /><pre name="code" class="java">extern(Windows):   
int test1(IUnknown p)   
{   
    return 1;   
}   
  
int test2(IUnknown p)   
{   
    return 2;   
}   
  
int test3(IUnknown p)   
{   
    return 3;   
}   
  
struct InterfaceVtbl   
{   
extern(Windows):   
    int function(IUnknown) test1;   
    int function(IUnknown) test2;   
    int function(IUnknown) test3;   
}   
  
struct Interface   
{   
    InterfaceVtbl* vtbl;   
  
    InterfaceVtbl vtbl_;   
  
    static Interface opCall()   
    {   
        Interface res;   
        res.vtbl_.test1 = &test1;   
        res.vtbl_.test2 = &test2;   
        res.vtbl_.test3 = &test3;   
        res.vtbl = &res.vtbl_;   
        return res;   
    }   
}   
  
interface IUnknown   
{   
    int test1();   
    int test2();   
    int test3();   
}   
  
extern (D):   
  
void main()   
{   
    Interface i = Interface();   
    assert(i.vtbl.test1(cast(IUnknown)&i) == 1);   
    assert(i.vtbl.test2(cast(IUnknown)&i) == 2);   
    assert(i.vtbl.test3(cast(IUnknown)&i) == 3);   
  
    IUnknown ii = cast(IUnknown)&i;   
    assert(ii.test1() == 1);   
    assert(ii.test2() == 2);   
    assert(ii.test3() == 3);   
}</pre><br /><br />    另外需要说明的是extern(D)，extern(Windows)，extern(Pascal)等特征，只是用来描述函数的调用约定，与接口的类型无关。<br />    一句话：D中的类与标准D接口都有ClassInfo在虚表的0项上，而COM接口的虚表是干净的；而将一个接口声明为COM接口的方式为：将这个接口命名为IUnknown或继承自IUnknown。
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/73268#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 22 Apr 2007 23:47:16 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/73268</link>
        <guid>http://h-rain.javaeye.com/blog/73268</guid>
      </item>
      <item>
        <title>在cygwin中编译gdc 0.23</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/72476" style="color:red;">http://h-rain.javaeye.com/blog/72476</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">一 准备
前面的setup过程参考gdc的安装说明.
/cygdrive/d/gdc/gcc-3.4.5是gdc的源码目录
在cygwin的环境下,要不就修改gdc automake文件的版本,要不就安装1.9.4,需要保持版本一致
拷贝cygwin下的cygiconv-2.dll,cygintl-2.dll,cygintl-8.dll到gcc-3.4.5/gcc目录

二 配置
cd /cygdrive/d/gdc/gcc-3.4.5
configure --prefix=/usr/local/gdc --enable-languages=c,d

三 构建
1 
	make
	到配置phobos出错,不用管,进行下面的安装
2 
	make install
3
	cp /usr/local/gdc/bin/gdc /usr/local/gdc/bin/gdc-3.4.5.exe
4	
	cd /cygdrive/d/gdc/gcc-3.4.5/i686-pc-cygwin/libphobos
	PATH='/usr/local/gdc/bin':$PATH CC=/usr/local/gdc/bin/gdc-3.4.5.exe /bin/sh /cygdrive/d/gdc/gcc-3.4.5/libphobos/configure  --host=i686-pc-cygwin --build=i686-pc-cygwin --enable-multilib --prefix=/usr/local/gdc --enable-languages=c,d --with-gcc-version-trigger=/cygdrive/d/gdc/gcc-3.4.5/gcc/version.c --program-transform-name=s,y,y, --srcdir=../.././libphobos --with-target-subdir=i686-pc-cygwin CPPFLAGS='-O2' build_alias=i686-pc-cygwin host_alias=i686-pc-cygwin  --no-create --no-recursion target_alias=i686-pc-cygwin
5
	make
	make install</pre><br /><br />自己写的备忘,不是很清晰.<br />大家拍砖的时候,请帮忙完善:)
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/72476#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Apr 2007 14:34:39 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/72476</link>
        <guid>http://h-rain.javaeye.com/blog/72476</guid>
      </item>
      <item>
        <title>在Windows上配置 CodeBlocks+DMD 进行 D 编程</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/65825" style="color:red;">http://h-rain.javaeye.com/blog/65825</a>&nbsp;
          发表时间: 2007年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用DMD1.011+DDbg0.1.1+CodeBlocks,配置完成后,就可以进行调试了.<br /><br />部分内容可以参考 在 <a href="http://h-rain.javaeye.com/admin/show/55504" target="_blank">Windows 上配置 CodeBlocks + gdcwin 进行 D 编程</a><br /><br />在CodeBlocks上配置 DMD 与配置GDC的步骤基本相同,都是指定编译器的所在目录,指定Include,Lib搜索路径等.<br /><br />一 下载与准备<br /><br />1 下载DMD与DMC:<br /><a href="http://ftp.digitalmars.com/dmd.zip" target="_blank">http://ftp.digitalmars.com/dmd.zip</a><br /><a href="http://ftp.digitalmars.com/dmc.zip" target="_blank">http://ftp.digitalmars.com/dmc.zip</a><br />假设,DMC与DMD被解压缩在 C:\mingw\D\DM 与 C:\mingw\D\DMD.<br /><br />2 下载DDbg,主页在<a href="http://ddbg.mainia.de/releases.html" target="_blank">http://ddbg.mainia.de/releases.html</a><br />假设,DDbg的可执行文件被解压缩在C:\mingw\D\DMD\bin下面<br /><br /><br />二 设置<br /><br />1 设置DDbg<br />     DDbg可以模拟GDB的CLI接口(使用-cli=gdb命令行开关),所以可以被集成进CodeBlocks,下载包中已经存在ddbg_gdb.bat可以直接使用。<br /><br />2 设置CodeBlocks:<br />  1) 在CodeBlocks的Setings菜单下,选择Compiler And Debuger菜单项,出现编译器设置对话框.<br />  2) Selected Compiler下拉列表框中,选择 Digital Mars D Compiler<br /><br />  3) 在第二个下拉列表框中,选择Toolchain Executables,下面就出现了Compiler's installation Directory编辑框,  <br />     A) 点击"..."按钮,选择编译器的安装目录为C:\mingw\D\dmd目录<br />      B)在Program Files页中,设置Debuger为DDbg_gdb.bat<br /><br />  4) 在第二个下拉列表框中,选择Search Directory,我们来配置编译链接搜索目录.<br />    A)Complier页,保证有路径C:\mingw\D\dmd\src\phobos<br />    B)Linker页,保证有路径C:\mingw\D\dmd\lib<br /><br /><br />三 使用<br />      1 新建D工程,选择使用DMD编译器.<br />     2 在Project build options对话框中,选择Debug目标,在第二个下拉列表框中选择Linker settings,在Other linker options输入框中,输入-g<br />     3 编译,设置断点,F8开始调试吧!<br /><br />整体的要点:<br />     1 设置编译器的安装路径<br />      2 更改调试器为ddbg_gdb.bat<br />     3 在每个工程的Debug目标中,给链接器增加一个-g调试开关.<br /><br />      因为DMD的编译器与链接器是一个,而正常的时候,连接器是没有-g调试开关的,所以就不能将调试信息链接进exe文件,因此就无法被ddbg调试.
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/65825#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 Mar 2007 15:19:17 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/65825</link>
        <guid>http://h-rain.javaeye.com/blog/65825</guid>
      </item>
      <item>
        <title>在 Windows 上配置 CodeBlocks + gdcwin 进行 D 编程</title>
        <author>h_rain</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://h-rain.javaeye.com">h_rain</a>&nbsp;
          链接：<a href="http://h-rain.javaeye.com/blog/55504" style="color:red;">http://h-rain.javaeye.com/blog/55504</a>&nbsp;
          发表时间: 2007年02月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>(2007-03-07更新,使用GDC 0.23,基于DMD 1.007)</p>
<p>零&nbsp;说明<br />
&nbsp;&nbsp;经过下面的步骤,我们就拥有了一个(基本)全能的D&nbsp;IDE了.<br />
&nbsp;可以对D工程进行语法高亮,代码完成,可以进行可视化的调试!!<br />
</p>
<p>一&nbsp;下载,准备</p>
<p>1&nbsp;下载CodeBlocks,目前是1.0rc2,使用没有MinGW打包的我们自己安,否则gcc,gdc版本问题很麻烦.<br />
&nbsp;<a href="http://jaist.dl.sourceforge.net/sourceforge/codeblocks/codeblocks-1.0rc2.exe">http://jaist.dl.sourceforge.net/sourceforge/codeblocks/codeblocks-1.0rc2.exe</a><br />
&nbsp;<br />
2&nbsp;下载CodeBlocks的更新包(每夜构建),这个是列表<br />
&nbsp;<a href="http://forums.codeblocks.org/index.php?board=20.0">http://forums.codeblocks.org/index.php?board=20.0</a><br />
&nbsp;&nbsp;我昨天使用的是2007-2-11的更新,应该总是使用最新的.<br />
&nbsp;&nbsp;&nbsp;<a href="http://download.berlios.de/codeblocks/CB_20070211_rev3592_win32.7z">http://download.berlios.de/codeblocks/CB_20070211_rev3592_win32.7z</a><br />
&nbsp;&nbsp;每夜构建需要一些运行时文件的更新,如MinGW和xwWidgets的DLL等,也需要下载.<br />
&nbsp;&nbsp;<br />
3&nbsp;下载MinGW,目前使用的是5.1.3<br />
&nbsp;<a href="http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe">http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe</a><br />
&nbsp;<br />
4&nbsp;下载gdb,我用的是6.3-2<br />
&nbsp;<a href="http://jaist.dl.sourceforge.net/sourceforge/mingw/gdb-6.3-2.exe">http://jaist.dl.sourceforge.net/sourceforge/mingw/gdb-6.3-2.exe</a><br />
&nbsp;<br />
5&nbsp;下载gdc,目前是0.23,基于DMD&nbsp;1.007最新版</p>
<p><u><font color="#0000ff"><a href="http://nchc.dl.sourceforge.net/sourceforge/dgcc/gdc-0.23-mingw32-gcc-3.4.5.tar.bz2">http://nchc.dl.sourceforge.net/sourceforge/dgcc/gdc-0.23-mingw32-gcc-3.4.5.tar.bz2</a></font></u><a href="http://jaist.dl.sourceforge.net/sourceforge/gdcwin/gdc-0.22-gcc-3.4.5.exe"></a></p>
<p>二&nbsp;安装</p>
<p>1&nbsp;MinGW<br />
&nbsp;MinGW使用在线下载安装,选择你需要的组件,假设安装到c:\MinGW,以下称MinGW安装目录.<br />
2&nbsp;gdb<br />
&nbsp;选择安装目录为MinGW安装目录,一通下一步就OK了.<br />
3&nbsp;gdcwin<br />
&nbsp;解压缩<font color="#0000ff">gdc-0.23-mingw32-gcc-3.4.5.tar.bz2</font>到MinGW安装目录覆盖就OK了.<br />
4&nbsp;安装CodeBlocks<br />
&nbsp;运行codeblocks-1.0rc2.exe,选择安装目录,我直接就安装在C:\Program&nbsp;Files\CodeBlocks<br />
5&nbsp;安装CodeBlocks的更新包<br />
&nbsp;A)&nbsp;更新运行时包:(根据<a href="http://forums.codeblocks.org/index.php?board=20.0">http://forums.codeblocks.org/index.php?board=20.0</a>的建议)<br />
&nbsp;&nbsp;解出mingwm10.7z里面的mingwm10.dll,替换C:\Program&nbsp;Files\CodeBlocks里面的.<br />
&nbsp;&nbsp;解出wxmsw26_gcc_cb_wx2.6.3p2.7z里面的wxmsw26_gcc_cb.dll,替换C:\Program&nbsp;Files\CodeBlocks里面的.<br />
&nbsp;&nbsp;解出wxmsw26u_gcc_cb_wx2.6.3p2AndCbPatch_version3.7z里面的wxmsw26u_gcc_cb.dll,替换C:\Program&nbsp;Files\CodeBlocks里面的.<br />
&nbsp;B)&nbsp;解出CB_20070211_rev3592_win32.7z每夜构建更新包里面的所有文件,替换C:\Program&nbsp;Files\CodeBlocks里面的.<br />
&nbsp;<br />
三&nbsp;设置编译器<br />
&nbsp;1&nbsp;在CodeBlocks的Setings菜单下,选择Compiler&nbsp;And&nbsp;Debuger,出现编译器设置对话框.<br />
&nbsp;2&nbsp;Selected&nbsp;Compiler下拉列表框中,选择GDC&nbsp;D&nbsp;Compiler<br />
&nbsp;3&nbsp;在第二个下拉列表框中,选择Toolchain&nbsp;Executables,下面就出现了Compiler's&nbsp;installation&nbsp;Directory编辑框,<br />
&nbsp;&nbsp;点击Auto-Detect,应该就会自动找到&quot;C:\MinGW&quot;,我们的编译器安装路径.下面的选项不用动.</p>
<p>经过测试，下面的步骤4可以不用设置<br />
<strike>&nbsp;4&nbsp;在第二个下拉列表框中,选择Search&nbsp;Directory,我们来配置编译链接搜索目录.<br />
&nbsp;&nbsp;A)Complier页,保证有路径C:\mingw\bin<br />
&nbsp;&nbsp;B)Linker页,保证有路径C:\mingw\lib<br />
</strike>&nbsp;&nbsp;<br />
四&nbsp;使用<br />
&nbsp;现在就可以创建一个D工程了,编译,设置断点,F8调试,哈哈哈哈...</p>
<div forimg="1"><img src="c:\5.jpg" alt="" /></div>
          <br/>
          <span style="color:red;">
            <a href="http://h-rain.javaeye.com/blog/55504#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 24 Feb 2007 22:22:26 +0800</pubDate>
        <link>http://h-rain.javaeye.com/blog/55504</link>
        <guid>http://h-rain.javaeye.com/blog/55504</guid>
      </item>
  </channel>
</rss>