WarpSearch V1.0 Introduction ------------ This is the AmiExpress version of WarpSearch. It uses the boyer-moore search algorithm implemented in assembler code. This algorithm is the fastest available. Features -------- V1.0: -pattern matching -double buffered asynchonous I/O -backwards/forwards counting of filelists -highlightning Installation ------------ Copy "z.info" to "bbs:commands/bbscmd/". Change LOCATION to your full path of the WarpSearch executable. Usage ----- z <+/-> Example usage: "z foo" (searches from ul dir down for "foo"). Wildcards in pattern are allowed, like "z foo*bar" or "z bm_zearch*V1.0*" Use "z foo*bar 2 +" to search from dir2 upwards. Default is downwards search. The pattern must match an expression in one line. Patterns are not case sensitive. Only "*" is accepted as a wildcard and no other constructions like "#?","?" , which noone needs anyway in this application. Info ---- The complete filedescription including filename etc. is searched through. We, the authors, think that this magic code is the fastest search routine ever made for an /X like filelist, because the 100% assembler boyer-moore search routine with pattern matching and highlightning is optimized for cpu cycles by hand, some magic is done for splitted filedescriptions, asychronous I/O. We concidered speedup concepts for every line of code. On our system the bottleneck is the Fast-SCSI-II Baracuda drive with a Fast-SCSI-II CyberSCSI Controller that does 7MB/s, and the code is 3 times faster if the filelist is in RAM with 50MB/s burst. The maximum length of a description line allowed is 1000 chars. Since /X allows 80 chars/line as maximum we think this is no bug. If a line is longer than 1000 chars enforcer hits may occur. A check for line length would slow down the code significantly. That`s why we don`t do it. For those who are interested, a short explanation of what "double buffered async I/O" means: Due to the coolness of the Amiga, SCSI is the most accepted standard on this platform (..well if we dont consider 4000 desktops..). SCSI has the ability to transfer data per DMA, thus meaning without using the processor. This is were async I/O comes in. A program using double buffered async I/O lets the File- System first fill up one buffer, then sends the request to fill up the second buffer, and while the HD is busy transfering data to the 2nd buffer the processor is free to do its work on the first one. As you can imagine this technique dramatically speeds up the whole process. If you are keen on a shell version, just ask. Send your suggestions or bug reports to crayor@cs.tu-berlin.de. Greetz ------ Some hellos to the following guys: "Ibo" - with his always busy or down BBS, so that we weren`t able to abuse his BBS for beta testing ;) Hijack - thx for the cool name of this door m8. (yep! "WarpSearch" actually was his idea) SCSI - for his help on using iwan.device Amok - for the address of Mr.F STC - for the competition of coding the fastest search code for /X filelists Hydra - for his try to code a better /X (hbbs) Dave Haynie - for answering my email on the Surfer Package Revision History ---------------- V1.0 - first public release