发现pos在长文档中搜索字符串速度不是很理想,有更快的吗?

解决方案 »

  1.   

    试试FastCode,里面有对Pos针对CPU的优化。
      

  2.   

    真是高人阿,把pos都能用穿!!FastCode知道这个,但不知道针对cpu的优化了?更高阿
      

  3.   

    你的文档有多大?有时候并不是POS的问题.如果文档很大,比如上百M的话,需要特殊处理.比如做成内存映射文件,再搜索.
      

  4.   

    试试faststring这个应该是最快的了。
    不过如果是大文件,还是应该考虑一下使用方法来处理。
      

  5.   

    pos定义在system单元,全部是用汇编完成的,速度应该很难突破.
      

  6.   

    所以先不从POS突破,先把文件映射到内存去,做成内存映射文件来提高速度.
      

  7.   

    FastCode对CPU有优化,不同的CPU,可以自动识别,使用不同的机器指令。具体看里面的程序。
      

  8.   

    对fastcode还不太会用,用里面的示例不能通过编译,找不到fastmove单元。
    直接调用fastcodepos单元中的函数,好象没有效果。
    我的cpu是笔记本intel-m的,调用FastCodePosPMD函数,速度几乎没有改变。
      

  9.   

    内存映谢?
    我是将word/excel/powerpoint文档存贮在服务器的数据库中,文档约有1200000个,体积已近1G,客户需要依照关键字在所有文档中查找包含关键字的文档.
    现在我的做法是用adoquery将文档读入内存流(设置CursorLocation为clUseServer,cachesize为200),然后在流中用pos查找字符串。目前,1000编文档大约用时52秒。
    现在我分析,在硬件和带宽一定的条件下,影响速度主要是两个因素:
    1、CursorLocation、cachesize值的设置;
    2、Pos函数。
      

  10.   

    用fastcode是否只是编译时对CPU进行优化,而运行是不能?如果是这样对于发行给用户的程序则用处也不大。
      

  11.   

    再下载Fastmm4,FastMove,只要在project开头引用即可uses fastmm4,fastmove,fastcode, 
    forms,..............是运行时优化,你看程序,会发现它是在启动时判断CPU类型,然后修改具体函数(比如Pos)的入口。
      

  12.   

    再看了一下lz的需求,如果是数据库的话,你应该尝试使用数据库的全文检索。pos函数提升有限。
      

  13.   

    word/excel/powerpoint/pdf
    mssql2000以上是支持全文索引的。相信速度比你的查询快
      

  14.   

    全文检索?由于存贮在表中的数据是image类型的word文档,而且数据库是sybase,不知能否实现全文检索.