Page 3 of 3 FirstFirst 123
Results 61 to 67 of 67

Thread: Fastest decompressor!?

  1. #61
    Member Sanmayce's Avatar
    Join Date
    Apr 2010
    Location
    Sofia
    Posts
    57
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Enter-the-BESTer or an alchemical clash of pairs of primes

    When an x-bit hash where x < 16 and is not a power of 2 is needed,
    here comes 'FNV1A_Hash_4_OCTETS': a slightly tuned FNV1A hash for a huge(22,202,980) wordlist of latin-letters-words.

    Two improvements for the generic(base) FNV1A hash:
    - first, better speed: by reducing 'imul' instructions when string is 4++ chars
    - second, better dispersion: by experimenting(superficially-lite test done, so far) with 'FNV1_32_PRIME'

    Or more concretely:
    - For FNV1_32_INIT = 2166136261
    - Giving to 'FNV1_32_PRIME' all primes between 2 and 11987
    - Shifting by 16bits instead of 13bits, when 8192 slots are used

    C code:
    Code:
    typedef unsigned char u_int8_t;
    typedef unsigned long u_int32_t;
    
    #define FNV1_32_INIT ((u_int32_t)2166136261)
    #define FNV1_32_PRIME ((u_int32_t)1607)
    
    #define FNV_32A_OP(hash, octet) \
        (((u_int32_t)(hash) ^ (u_int8_t)(octet)) * FNV1_32_PRIME)
    
    #define FNV_32A_OP32(hash, octet) \
        (((u_int32_t)(hash) ^ (u_int32_t)(octet)) * FNV1_32_PRIME)
    
    0800 // Invoking: FNV1A_Hash_4_OCTETS(wrd, wrdlen>>2) // = 0,1,2,3,4,5,6,7 [1..31]
    0801 int FNV1A_Hash_4_OCTETS(char *str, int wrdlen_QUADRUPLETS)
    0802 { 
    0803 u_int32_t hash;
    0804 char *p;
    0805 
    0806 hash = FNV1_32_INIT;
    0807 p=str;
    0808 
    0809 // The goal of stage #1: to reduce number of 'imul's.
    0810 
    0811 // Stage #1:
    0812 for (; wrdlen_QUADRUPLETS != 0; --wrdlen_QUADRUPLETS) {
    0813     hash = FNV_32A_OP32(hash, (unsigned long)*(long *)p); // mov edi, DWORD PTR [eax]
    0814     p=p+4; // add eax, 4
    0815 }
    0816 
    0817 // Stage #2:
    0818 for (; *p; ++p) {
    0819     hash = FNV_32A_OP(hash, *p); // mov dl, BYTE PTR [eax]
    0820 }
    0821 
    0822   //return ((hash>>13) ^ hash) & 8191; // (((u_int32_t)1<<(x))-1) where x=13
    0823   return ((hash>>16) ^ hash) & 8191; // 00..8191 i.e. 2^13=8192
    0824 }
    Assembler code:
    _FNV1A_Hash_4_OCTETS PROC NEAR
    ; Line 812
    mov edx, DWORD PTR _wrdlen_QUADRUPLETS$[esp-4]
    test edx, edx
    mov eax, DWORD PTR _str$[esp-4]
    push esi
    mov esi, DWORD PTR _FNV1_32_PRIME
    mov ecx, -2128831035
    je SHORT $L1612
    push edi
    npad 7
    $L1610:
    ; Line 813
    mov edi, DWORD PTR [eax]
    xor edi, ecx
    imul edi, esi
    ; Line 814
    add eax, 4
    dec edx
    mov ecx, edi
    jne SHORT $L1610
    pop edi
    $L1612:
    ; Line 818
    mov dl, BYTE PTR [eax]
    test dl, dl
    je SHORT $L1619
    $L1617:
    ; Line 819
    movzx edx, dl
    xor edx, ecx
    imul edx, esi
    inc eax
    mov ecx, edx
    mov dl, BYTE PTR [eax]
    test dl, dl
    jne SHORT $L1617
    $L1619:
    ; Line 823
    mov eax, ecx
    shr eax, 16
    xor eax, ecx
    and eax, 8191
    pop esi
    ; Line 824
    ret 0
    _FNV1A_Hash_4_OCTETS ENDP
    So, 'FNV1A_Hash_4_OCTETS' calculates faster and gives better distribution(3549448 for FNV1_32_PRIME=1607), which is 0.6% better(less collisions), than generic 'FNV1A_Hash' with 3527916.

    No code has to be inserted here. Note:
    The 'strlen' overhead(CASE #1) is necessary due to priorly(before hash invocation) needed len-of-string for 'FNV1A_Hash_4_OCTETS'.
    Almost always, that is the case, since parsing of incoming text must know length of words/lines/files.
    In case of not knowing this length: ((119-105)/105)*100% = 13% degradation is unacceptable.
    The 'strlen' is an awful brake.
    Also whether the code overhead(one additional cycle) of 'FNV1A_Hash_4_OCTETS' is so successful(as a trade-off) or the testbed is deceiving I do not know, here I am not so sure regardless of notorious delays caused by 'imul' and 'div' instructions.
    FNV proves to be great, dealing with 4x8bits(four octets) at once doesn't hurt distribution at all, I was amazed by consistency(stable behavior) of 'FNV1A_Hash_4_OCTETS'.

    I want to make a total clash of all possible pairs 'FNV1_32_INIT' & 'FNV1_32_PRIME' in order to lessen even a few thousand collisions.
    This is critical for speed performance e.g. when 30,974,750,142 words, the case of wikipedia-en-html.tar, must be hashed.
    The current obstacle is needed-time: each filling (26 slots x 31 sub-slots x 8192 sub-sub-slots) executes in 32-36 seconds for each pair.
    Such an easy task, but I can't see how to get done, it is not hard but slow even with 15 times faster testbed.

    Between 1..1166136247 there are 58,834,113 primes (inclusive).
    Between 1..16777619 there are 1,077,891 primes (inclusive).
    Or 58834113*1077891 = 63,416,760,895,683 pairs or 2,010,932 years needed at one-pair-per-second rate.

    Finding THE best pair in my opinion is a total alchemy, due to the very nature of hashing: which is mainly alchemical and partly scientific.
    Since the magnum corpus of words is static-enough, THE pair is worthy to be found.

    It doesn't take a think-tank to see the superiority of FNV, Fowler/Noll/Vo did reveal a thing of beauty.
    Last edited by Sanmayce; 11th August 2010 at 19:28.

  2. #62
    Member Sanmayce's Avatar
    Join Date
    Apr 2010
    Location
    Sofia
    Posts
    57
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Enter-the-Dragon or fast[est]-latin-letters-wordlist hash function

    In order to avoid misguidance, I want explicitly to stress that I am in quest for FNV1A derivate tuned for latin-letter-word type-of-data-set.

    Also, the successful boosting comes, apparently and entirely, from reducing number of loops not 'mul's.

    Sorry: another blunder of mine: the assembly code in previous post is slow because in a hurry I used 'FNV1_32_PRIME' as a variable(leftover from commented HASH benchmark) not a constant.
    As a result theoretically 'FNV1A_Hash_4_OCTETS' must be even faster than generic FNV1A which was tested with a constant i.e. without unnecessary:
    'mov esi, DWORD PTR _FNV1_32_PRIME', 'push esi', 'pop esi'.

    I tried eight Mersenne primes as 'FNV1_32_PRIME', soon I will try(just in case) and Mersenne-vs-Mersenne i.e. giving Mersenne's to 'FNV1_32_INIT' too.
    List of next 8 Mersenne primes with the corresponding dispersion:

    3,336,515: (1<<2)-1 = 3
    3,375,293: (1<<3)-1 = 7
    3,445,225: (1<<5)-1 = 31
    3,386,565: (1<<7)-1 = 127
    3,372,963: (1<<13)-1 = 8191
    2,566,803: (1<<17)-1 = 131071
    3,329,547: (1<<19)-1 = 524287
    1,010,767: (1<<31)-1 = 2147483647

    I suppose anchoring 31 as 'FNV1_32_PRIME' and experimenting with 'FNV1_32_INIT' would be a promising alternative way to go, at least for the fact that only 2-3 billion pairs must be checked in total.

    My current favorite(due to 3,549,448 dispersion) number 1607, for my regret, has a too long sequence:
    1607 = (1<<10)+(1<<9)+(1<<6)+(1<<3)-1 i.e. imul ecx, 1607 equals to something like this:

    In Assembly:

    mov eax, 0
    mov edx, ecx
    shl edx, 10
    add eax, edx
    mov edx, ecx
    shl edx, 9
    add eax, edx
    mov edx, ecx
    shl edx, 6
    add eax, edx
    mov edx, ecx
    shl edx, 3
    add eax, edx
    sub eax, ecx

    so, I guess, I quickly must find another one with a similar dispersion and a shorter sequence.

    For 31 = (1<<5)-1, for my disappointment, the 'FNV1A_Hash_4_OCTETS_31' DIDN'T outperform the one with 'imul's:

    In C:

    #define FNV_32A_OP32_MULless_core(hash, octet) \
    ( (u_int32_t)(hash) ^ (u_int32_t)(octet) )

    #define FNV_32A_OP32_MULless(hash, octet) \
    ( (FNV_32A_OP32_MULless_core(hash, octet)<<5) - FNV_32A_OP32_MULless_core(hash, octet) )

    In a dummy manner I call such a sequence 'prime-factorization', prime-factorization, ha-ha, what a punny joke, nevertheless with a GREAT potential: or as always the joker(being the wittiest in all the kingdom) has the last word/laugh.

    Obviously even the mainstream Pentium Merom has excellent 'imul' performance, may be other/old processors will profit from such replacement. Alas, I have had high hopes. Or maybe only an optimized assembler implementation will make the difference.

    Let's face it: to achieve uncompromising speed performance two things are mandatory: a master-touch from assemblerist and choosing BEST prime-pair.

    Four changes in 'FNV1A_Hash_4_OCTETS' for 'FNV1A_Hash_8_OCTETS':
    - when invoking: >>3 instead of >>2
    - unsigned long long instead of unsigned long
    - a new prime-pair instead of 2166136261-1607
    - stride with 8 instead of 4

    Relying on intricate-firmness of FNV I expect(even with 32bit registers) the 'FNV1A_Hash_8_OCTETS' to be THE Latin-Letters-Words-Hash-King, due to the simple fact: average word-length is 10 chars.

    An addition:

    Code:
    typedef unsigned char u_int8_t;
    typedef unsigned long u_int32_t;
    typedef unsigned long long u_int64_t;
    
    #define FNV1_64_INIT ((u_int64_t)14695981039346656037)
    #define FNV1_64_PRIME ((u_int64_t)1099511628211)
    #define FNV1_32_INIT ((u_int32_t)2166136261)
    #define FNV1_32_PRIME ((u_int32_t)1607)
    
    #define FNV_64A_OP(hash, octet) \
        (((u_int64_t)(hash) ^ (u_int8_t)(octet)) * FNV1_64_PRIME)
    
    #define FNV_64A_OP64(hash, octet) \
        (((u_int64_t)(hash) ^ (u_int64_t)(octet)) * FNV1_64_PRIME)
    
    #define FNV_32A_OP(hash, octet) \
        (((u_int32_t)(hash) ^ (u_int8_t)(octet)) * FNV1_32_PRIME)
    
    #define FNV_32A_OP32(hash, octet) \
        (((u_int32_t)(hash) ^ (u_int32_t)(octet)) * FNV1_32_PRIME)
    
    0976 // Invoking: FNV1A_Hash_Granularity(wrd, wrdlen>>0|2|3, 0|2|3) 
    0977 int FNV1A_Hash_Granularity(char *str, int wrdlen_granulated, int Granularity) // wrdlen>>0=wrdlen
    0978 { 
    0979 u_int32_t hash;
    0980 u_int64_t hash64;
    0981 char *p;
    0982 
    0983 hash = FNV1_32_INIT;
    0984 p=str;
    0985 
    0986 // The goal of stage #1: to reduce number of 'imul's and mainly: the number of loops.
    0987 
    0988 // Stage #1:
    0989         if (Granularity == 2) {
    0990 for (; wrdlen_granulated != 0; --wrdlen_granulated) {
    0991     hash = FNV_32A_OP32(hash, (u_int32_t)*(u_int32_t *)p);
    0992     p=p+4; // (1<<Granularity): 1<<0=1, 1<<2=4, 1<<3=8
    0993 }
    0994         }
    0995         if (Granularity == 3) {
    0996 hash64 = FNV1_64_INIT;
    0997 for (; wrdlen_granulated != 0; --wrdlen_granulated) {
    0998     hash64 = FNV_64A_OP64(hash64, (u_int64_t)*(u_int64_t *)p);
    0999     p=p+8; // (1<<Granularity): 1<<0=1, 1<<2=4, 1<<3=8
    1000 }
    1001 for (; *p; ++p) {
    1002     hash64 = FNV_64A_OP(hash64, (u_int8_t)*(u_int8_t *)p);
    1003 }
    1004 
    1005   //return ((hash>>13) ^ hash) & 8191; // (((u_int32_t)1<<(x))-1) where x=13
    1006   return ((hash64>>51) ^ hash64) & 8191; // 00..8191 i.e. 2^13=8192
    1007   // probably better shifting is not by 16 bits but ...
    1008   //hash64>>16: 3,544,160 just bad
    1009   //hash64>>33: 3,547,854
    1010   //hash64>>34: 3,547,266
    1011   //hash64>>35: 3,547,453
    1012   //hash64>>36: 3,547,242
    1013   //hash64>>40: 3,548,263
    1014   //hash64>>44: 3,548,242
    1015   //hash64>>45: 3,549,056
    1016   //hash64>>46: 3,549,207
    1017   //hash64>>47: 3,549,094
    1018   //hash64>>50: 3,549,392
    1019   //hash64>>51: 3,549,395 i.e. maximum shift: the 13 most significant bits i.e. (64-13); closest to 3,549,448
    1020 
    1021 // Above results are obtained for following set: 
    1022 //if (wrdlen<=19) // 4x4+3=19 i.e. last contains 7 clashes
    1023 //              Slot = FNV1A_Hash_Granularity(wrd, wrdlen>>2, 2)<<2; //13+++++
    1024 //else            // 2x8+4=20 i.e. first contains 6 clashes
    1025 //              Slot = FNV1A_Hash_Granularity(wrd, wrdlen>>3, 3)<<2; //13+++++
    1026         }
    1027 
    1028         //if (Granularity != 3) {
    1029 // Stage #2:
    1030 for (; *p; ++p) {
    1031     hash = FNV_32A_OP(hash, (u_int8_t)*(u_int8_t *)p);
    1032 }
    1033 
    1034   //return ((hash>>13) ^ hash) & 8191; // (((u_int32_t)1<<(x))-1) where x=13
    1035   return ((hash>>16) ^ hash) & 8191; // 00..8191 i.e. 2^13=8192
    1036         //}
    1037 }
    Note: The multiplication with 64bit variables using 32bit registers has nothing to do with the 32/32 counterpart.
    The speed degradation is considerable, my choice is to use a stride with 8 chars only when words contain more than 19 chars, because while reducing number of loops the time for multiplication is increased. Obviously 'FNV1A_Hash_Granularity' is full-fledged only when 64bit registers are used.

    A calibration and more intensive testing must be done,
    but I was eager to share this new '3in1' variant designed to be the CORE(desperately pursuing to be fitted in the fastest cache) of similar to this main cycle:

    while (1==1) {
    if (wrdlen<=6)
    Slot = FNV1A_Hash_Granularity(wrd, wrdlen>>0, 0);
    else if (wrdlen<=19)
    Slot = FNV1A_Hash_Granularity(wrd, wrdlen>>2, 2);
    else
    Slot = FNV1A_Hash_Granularity(wrd, wrdlen>>3, 3);
    }


    As far as I know this core cycle must not exceed 64 bytes of code.
    By having blended three-into-one i.e. being optimized for code size this variant might be very useful.
    Soon, hopefully with the help of other fans, I will choose new [more proper] values for 64bit shifting and ... and to dedicate this function to Bruce Lee and his way of seeing the world.

    The Bottom-line: An optimized 64bit assembly etude is needed.

    Double-thanks Mr. Noll for your valuable explanations & bona fide attitude.
    Attached Files Attached Files
    Last edited by Sanmayce; 15th August 2010 at 12:33. Reason: Adding a new derivate & ERROR-fixing

  3. #63
    Member Sanmayce's Avatar
    Join Date
    Apr 2010
    Location
    Sofia
    Posts
    57
    Thanks
    0
    Thanked 0 Times in 0 Posts

    'strstr' showdown round #2

    I observe a nasty habit of mine: superficial-touch-and-go instead of thorough-touch-and-go.
    The lack of ambition is one of the reasons, for this unpleasant burden.
    The damage is partially undone, I just purged the unnecessary luggage and applied to 'Boyer-Moore-Horspool' the HASH principle to proceed only when the target "looks like" once more, also, I replaced 'memcmp' in 'Karp-Rabin' with faster inline code.

    Last night, something got me started, having watched an interview with one[and the only] German she-test-pilot of first jet-crafts. This full-of-life little old lady has knocked me down with her passionate way of describing what was the feeling of climbing 9000m in 120 seconds. She described it as 'intoxicated by speed' experience.
    The jolt of inspiration moved me to a new very strong 'Karp-Rabin-Boyer-Moore-Horspool_Kaze' revision.
    Too long name for a base function, so I chose an alias: 'Railgun'(based on magnetism it is the current fastest propeller) because using magnetic forces is the easiest way to find a needle(from steel) in a haystack.
    Here comes the 'Railgun': an intoxicatingly fast blend(2in1) of 'Karp-Rabin' & 'Boyer-Moore-Horspool'.

    No code has to be inserted here.Below is the actual log which was used to fill the upper table:
    Code:
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>cl /Ox strstr_SHORT-SHOWDOWN.c
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
    Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
    
    strstr_SHORT-SHOWDOWN.c
    Microsoft (R) Incremental Linker Version 7.10.3077
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /out:strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN.obj
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): an
    Doing Search for Pattern(2bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 1212509/682
    strstr_Microsoft performance: 198KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 1212509/480
    strstr_GNU_C_Library performance: 281KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 1212509/487
    Railgun performance: 277KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 1212509/498
    KarpRabinKaze_BOOSTED performance: 271KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 1212509/525
    KarpRabinKaze performance: 257KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 1212509/624
    Karp_Rabin performance: 216KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 1212509/663
    Brute_Force_Dummy performance: 203KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 1212509/843
    Boyer-Moore-Horspool performance: 160KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 1212509/767
    Boyer_Moore_Horspool_Kaze performance: 176KB/clock
    StrnglenTRAVERSED: 138478024 bytes
    Doing Search for Pattern(2bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 1987797/673
    Railgun performance: 300KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): to
    Doing Search for Pattern(2bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 780175/770
    strstr_Microsoft performance: 208KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 780175/535
    strstr_GNU_C_Library performance: 300KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 780175/519
    Railgun performance: 309KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 780175/525
    KarpRabinKaze_BOOSTED performance: 305KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 780175/551
    KarpRabinKaze performance: 291KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 780175/697
    Karp_Rabin performance: 230KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 780175/752
    Brute_Force_Dummy performance: 213KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 780175/937
    Boyer-Moore-Horspool performance: 171KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 780175/818
    Boyer_Moore_Horspool_Kaze performance: 196KB/clock
    StrnglenTRAVERSED: 164505415 bytes
    Doing Search for Pattern(2bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 1076629/669
    Railgun performance: 302KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): amazing
    Doing Search for Pattern(7bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 319/945
    strstr_Microsoft performance: 211KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 319/586
    strstr_GNU_C_Library performance: 340KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 319/551
    Railgun performance: 362KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 319/548
    KarpRabinKaze_BOOSTED performance: 364KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 319/583
    KarpRabinKaze performance: 342KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 319/754
    Karp_Rabin performance: 264KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 319/822
    Brute_Force_Dummy performance: 242KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 319/635
    Boyer-Moore-Horspool performance: 314KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 319/613
    Boyer_Moore_Horspool_Kaze performance: 325KB/clock
    StrnglenTRAVERSED: 204432134 bytes
    Doing Search for Pattern(7bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 323/198
    Railgun performance: 1020KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): pasting
    Doing Search for Pattern(7bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 2/810
    strstr_Microsoft performance: 246KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 2/491
    strstr_GNU_C_Library performance: 406KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 2/551
    Railgun performance: 362KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 2/546
    KarpRabinKaze_BOOSTED performance: 365KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 2/581
    KarpRabinKaze performance: 343KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 2/754
    Karp_Rabin performance: 264KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 2/698
    Brute_Force_Dummy performance: 286KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 2/642
    Boyer-Moore-Horspool performance: 310KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 2/620
    Boyer_Moore_Horspool_Kaze performance: 322KB/clock
    StrnglenTRAVERSED: 204449363 bytes
    Doing Search for Pattern(7bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 2/208
    Railgun performance: 971KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): underdog
    Doing Search for Pattern(8bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 4/849
    strstr_Microsoft performance: 235KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 4/521
    strstr_GNU_C_Library performance: 383KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 4/548
    Railgun performance: 364KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 4/544
    KarpRabinKaze_BOOSTED performance: 367KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 4/577
    KarpRabinKaze performance: 346KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 4/755
    Karp_Rabin performance: 264KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 4/733
    Brute_Force_Dummy performance: 272KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 4/618
    Boyer-Moore-Horspool performance: 323KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 4/603
    Boyer_Moore_Horspool_Kaze performance: 331KB/clock
    StrnglenTRAVERSED: 204449185 bytes
    Doing Search for Pattern(8bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 4/179
    Railgun performance: 1128KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): superdog
    Doing Search for Pattern(8bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 0/928
    strstr_Microsoft performance: 215KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 0/570
    strstr_GNU_C_Library performance: 350KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 0/549
    Railgun performance: 363KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 0/548
    KarpRabinKaze_BOOSTED performance: 364KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 0/580
    KarpRabinKaze performance: 344KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 0/755
    Karp_Rabin performance: 264KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 0/788
    Brute_Force_Dummy performance: 253KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 0/616
    Boyer-Moore-Horspool performance: 324KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 0/601
    Boyer_Moore_Horspool_Kaze performance: 332KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    Doing Search for Pattern(8bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 0/180
    Railgun performance: 1122KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): skillessness
    Doing Search for Pattern(12bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 0/908
    strstr_Microsoft performance: 219KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 0/568
    strstr_GNU_C_Library performance: 351KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 0/541
    Railgun performance: 369KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 0/545
    KarpRabinKaze_BOOSTED performance: 366KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 0/575
    KarpRabinKaze performance: 347KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 0/769
    Karp_Rabin performance: 259KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 0/760
    Brute_Force_Dummy performance: 262KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 0/615
    Boyer-Moore-Horspool performance: 324KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 0/589
    Boyer_Moore_Horspool_Kaze performance: 338KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    Doing Search for Pattern(12bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 0/134
    Railgun performance: 1507KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): participants
    Doing Search for Pattern(12bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 141/812
    strstr_Microsoft performance: 245KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 141/492
    strstr_GNU_C_Library performance: 405KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 141/537
    Railgun performance: 371KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 141/532
    KarpRabinKaze_BOOSTED performance: 375KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 141/563
    KarpRabinKaze performance: 354KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 141/769
    Karp_Rabin performance: 259KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 141/671
    Brute_Force_Dummy performance: 297KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 141/614
    Boyer-Moore-Horspool performance: 325KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 141/588
    Boyer_Moore_Horspool_Kaze performance: 339KB/clock
    StrnglenTRAVERSED: 204441500 bytes
    Doing Search for Pattern(12bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 147/134
    Railgun performance: 1507KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): human consciousness
    Doing Search for Pattern(19bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 514/891
    strstr_Microsoft performance: 224KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 514/554
    strstr_GNU_C_Library performance: 360KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 514/518
    Railgun performance: 385KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 514/520
    KarpRabinKaze_BOOSTED performance: 383KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 514/550
    KarpRabinKaze performance: 362KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 514/750
    Karp_Rabin performance: 266KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 514/706
    Brute_Force_Dummy performance: 282KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 514/607
    Boyer-Moore-Horspool performance: 328KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 514/589
    Boyer_Moore_Horspool_Kaze performance: 338KB/clock
    StrnglenTRAVERSED: 204422699 bytes
    Doing Search for Pattern(19bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 519/117
    Railgun performance: 1727KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): I should have known
    Doing Search for Pattern(19bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 1/814
    strstr_Microsoft performance: 245KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 1/476
    strstr_GNU_C_Library performance: 419KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 1/513
    Railgun performance: 389KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 1/509
    KarpRabinKaze_BOOSTED performance: 392KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 1/539
    KarpRabinKaze performance: 370KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 1/749
    Karp_Rabin performance: 266KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 1/620
    Brute_Force_Dummy performance: 322KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 1/619
    Boyer-Moore-Horspool performance: 322KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 1/595
    Boyer_Moore_Horspool_Kaze performance: 335KB/clock
    StrnglenTRAVERSED: 204449346 bytes
    Doing Search for Pattern(19bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 1/133
    Railgun performance: 1519KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): grmbl
    Doing Search for Pattern(5bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 0/820
    strstr_Microsoft performance: 243KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 0/497
    strstr_GNU_C_Library performance: 401KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 0/558
    Railgun performance: 357KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 0/552
    KarpRabinKaze_BOOSTED performance: 361KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 0/589
    KarpRabinKaze performance: 338KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 0/757
    Karp_Rabin performance: 263KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 0/714
    Brute_Force_Dummy performance: 279KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 0/684
    Boyer-Moore-Horspool performance: 291KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 0/645
    Boyer_Moore_Horspool_Kaze performance: 309KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    Doing Search for Pattern(5bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 0/256
    Railgun performance: 789KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): email
    Doing Search for Pattern(5bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 1/1005
    strstr_Microsoft performance: 198KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 1/666
    strstr_GNU_C_Library performance: 299KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 1/564
    Railgun performance: 354KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 1/569
    KarpRabinKaze_BOOSTED performance: 350KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 1/603
    KarpRabinKaze performance: 331KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 1/757
    Karp_Rabin performance: 263KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 1/926
    Brute_Force_Dummy performance: 215KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 1/696
    Boyer-Moore-Horspool performance: 286KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 1/660
    Boyer_Moore_Horspool_Kaze performance: 302KB/clock
    StrnglenTRAVERSED: 204449414 bytes
    Doing Search for Pattern(5bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 1/273
    Railgun performance: 740KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): easy
    Doing Search for Pattern(4bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 4825/997
    strstr_Microsoft performance: 200KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 4825/675
    strstr_GNU_C_Library performance: 295KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 4825/565
    Railgun performance: 352KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 4825/568
    KarpRabinKaze_BOOSTED performance: 351KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 4825/602
    KarpRabinKaze performance: 331KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 4825/760
    Karp_Rabin performance: 262KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 4825/945
    Brute_Force_Dummy performance: 211KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 4825/725
    Boyer-Moore-Horspool performance: 275KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 4825/687
    Boyer_Moore_Horspool_Kaze performance: 290KB/clock
    StrnglenTRAVERSED: 204202166 bytes
    Doing Search for Pattern(4bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 5191/331
    Railgun performance: 610KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): fast
    Doing Search for Pattern(4bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 5384/796
    strstr_Microsoft performance: 250KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 5384/492
    strstr_GNU_C_Library performance: 405KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 5384/562
    Railgun performance: 354KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 5384/560
    KarpRabinKaze_BOOSTED performance: 356KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 5384/594
    KarpRabinKaze performance: 335KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 5384/753
    Karp_Rabin performance: 264KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 5384/713
    Brute_Force_Dummy performance: 279KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 5384/802
    Boyer-Moore-Horspool performance: 248KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 5384/705
    Boyer_Moore_Horspool_Kaze performance: 282KB/clock
    StrnglenTRAVERSED: 204186782 bytes
    Doing Search for Pattern(4bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 5945/344
    Railgun performance: 587KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): the
    Doing Search for Pattern(3bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 1192002/708
    strstr_Microsoft performance: 187KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 1192002/508
    strstr_GNU_C_Library performance: 261KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 1192002/481
    Railgun performance: 275KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 1192002/503
    KarpRabinKaze_BOOSTED performance: 263KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 1192002/530
    KarpRabinKaze performance: 250KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 1192002/640
    Karp_Rabin performance: 207KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 1192002/687
    Brute_Force_Dummy performance: 193KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 1192002/792
    Boyer-Moore-Horspool performance: 167KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 1192002/707
    Boyer_Moore_Horspool_Kaze performance: 187KB/clock
    StrnglenTRAVERSED: 135882884 bytes
    Doing Search for Pattern(3bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 2114180/504
    Railgun performance: 400KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>strstr_SHORT-SHOWDOWN.exe
    strstr_SHORT-SHOWDOWN, revision 4, written by Kaze.
    Input Pattern(up to 19 chars): TDK
    Doing Search for Pattern(3bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 0/800
    strstr_Microsoft performance: 249KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 0/471
    strstr_GNU_C_Library performance: 423KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 0/563
    Railgun performance: 354KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 0/558
    KarpRabinKaze_BOOSTED performance: 357KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 0/592
    KarpRabinKaze performance: 337KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 0/742
    Karp_Rabin performance: 269KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 0/691
    Brute_Force_Dummy performance: 288KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 0/736
    Boyer-Moore-Horspool performance: 271KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 0/710
    Boyer_Moore_Horspool_Kaze performance: 281KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    Doing Search for Pattern(3bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 0/396
    Railgun performance: 510KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003>
    I have tested a dozen of needles(2,3,4 chars): Berg's function is significantly faster, around 20%, wow.

    Note1: In fact 'Railgun' is not a strstr variant, sorry for the eventual confusion. Although the functionality is similar it takes 4 parameters instead of 2, and does not work with Needle-Length of 1 char. Also the revision 4 gives the actual(precise) performance report.

    Note2:
    I tested with OSHO.TXT, there are 2,459,508 lines(i.e. invocations), no line is longer than 960 chars and as a consequence 'Boyer-Moore-Horspool' section(it takes control when the haystack is 961 chars or greater) was not executed a single time.

    Obviously a parity exists, neither 'Railgun' nor 'strstr_GNU_C_Library' performance dominates, in half(all, he-he) the cases when one leads - the other follows, strange!
    The GNU variant is strong, but, applying properly, the principle of must-look-like will give a huge advantage, that is, the immense power of hashing will prevail, eventually, I know it.
    For now, I cannot back up my empty words, grmbl.

    Or as DANNII MINOGUE sings it well:
    Where do we go now?
    I don't know
    Innocence over
    Fading fast
    ...
    You're still promising perfection, perfection
    With empty words
    With empty words
    With empty words
    With empty words
    And it's hard to break a habit
    You're lost inside it
    ...
    A moment of coldness
    Cuts through me (cuts through me)
    I've tried to remember
    Why I don't leave (I don't leave)
    And you're the cause of my confusion
    Closing down the way I feel
    How come I don't see so clearly, so clearly
    ...


    Regarding 'FNV1A_Hash_4_OCTETS': there are four new&better 'FNV1_32_PRIME' replacements:
    //3,550,059: 1301077
    //3,550,201: 6981889
    //3,550,454: 5224447
    //3,551,220: 6496001

    Appendix & Final thoughts:

    Dummy me, at last I realized that, by using an old from 2002 C compiler, the tests I've done, so far, were crippled(half-done) because a modern compiler must go along with the older one.
    Dumbo was here, but no more. I've been using for a week the modern[est] Intel C compiler.

    At two occasions, it made the difference:
    - the pleasing one: boosted Leprechaun's main cycle by 18%;
    - the amazing one: boosted Boyer-Moore-Horspool's section of Railgun function by 57% which is a trivial cycle-in-cycle fragment.

    Impressive enough to become without a second thought Intel C compiler user, thanks Shelwien.
    My C world is upside-down now. I must recompile and retest everything.
    I am afraid that QuickLZ test was severely(soon I will undo the damage) underestimated due to my dumminess, sorry Lasse.
    Also, as a side-effect my little strstr quest did lead me to terra incognita, that is, the fastest(due to utilizing modern CPU capabilities by the compiler) strstr appeared unexpectedly and won dominantly(for not small haystacks).
    One of the two weak points(small needles and big haystacks) of Boyer-Moore-Horspool is in the past already.
    The other(small needles and small haystacks) remains due to the pre-process overhead, however this is not a problematic thing - the most important issue was solved: weakness became fastness.

    For patterns 'an'/'to', Railgun(Intel) performance: 461KB/clock and 477KB/clock respectively for not small haystacks.
    Three letter patterns boosted even more: 'TDK'/'the', Railgun(Intel) performance: 856KB/clock and 587KB/clock.
    And unstoppable with 4+ letter needles: 'fast'/'easy', Railgun(Intel) performance: 918KB/clock and 1074KB/clock.

    I did learn a lesson: from now on, I dare not to draw conclusions about performance even for fragments consisted of few lines.

    Code:
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003\_KAZE_strstr>dir
     Volume in drive C is H320_Vol2
     Volume Serial Number is A094-FAE2
    
     Directory of C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003\_KAZE_strstr
    
    08/31/2010  03:30 AM    <DIR>          .
    08/31/2010  03:30 AM    <DIR>          ..
    08/31/2010  03:29 AM                44 Compile_Intel.bat
    08/31/2010  03:29 AM                32 Compile_Microsoft.bat
    08/31/2010  03:29 AM       206,908,949 OSHO.TXT
    08/31/2010  03:29 AM            39,834 strstr_SHORT-SHOWDOWN.c
    08/31/2010  03:29 AM           470,016 strstr_SHORT-SHOWDOWN_Intel.exe
    08/31/2010  03:29 AM            57,344 strstr_SHORT-SHOWDOWN_Microsoft.exe
                   6 File(s)    207,476,219 bytes
                   2 Dir(s)   2,347,565,056 bytes free
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003\_KAZE_strstr>strstr_SHORT-SHOWDOWN_Intel.exe
    strstr_SHORT-SHOWDOWN, revision 5, written by Kaze.
    Input Pattern(up to 19 chars): skillessness
    Doing Search for Pattern(12bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 0/1228
    strstr_Microsoft performance: 162KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 0/580
    strstr_GNU_C_Library performance: 344KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 0/562
    Railgun performance: 355KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 0/568
    KarpRabinKaze_BOOSTED performance: 351KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 0/687
    KarpRabinKaze performance: 290KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 0/875
    Karp_Rabin performance: 228KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 0/857
    Brute_Force_Dummy performance: 232KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 0/735
    Boyer-Moore-Horspool performance: 271KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 0/746
    Boyer_Moore_Horspool_Kaze performance: 267KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    
    Doing Search for Pattern(12bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 0/88
    Railgun performance: 2296KB/clock
    
    Doing Search for 8x2 Patterns into String(206908949bytes) as-one-line ...
    Found ('an') 1987797 time(s), Railgun performance: 461KB/clock
    Found ('to') 1076629 time(s), Railgun performance: 477KB/clock
    Found ('TDK') 0 time(s), Railgun performance: 856KB/clock
    Found ('the') 2114180 time(s), Railgun performance: 587KB/clock
    Found ('fast') 5945 time(s), Railgun performance: 918KB/clock
    Found ('easy') 5191 time(s), Railgun performance: 1074KB/clock
    Found ('grmbl') 0 time(s), Railgun performance: 1287KB/clock
    Found ('email') 1 time(s), Railgun performance: 1167KB/clock
    Found ('pasting') 2 time(s), Railgun performance: 1603KB/clock
    Found ('amazing') 323 time(s), Railgun performance: 1603KB/clock
    Found ('underdog') 4 time(s), Railgun performance: 1836KB/clock
    Found ('superdog') 0 time(s), Railgun performance: 1836KB/clock
    Found ('participants') 147 time(s), Railgun performance: 2126KB/clock
    Found ('skillessness') 0 time(s), Railgun performance: 2126KB/clock
    Found ('I should have known') 1 time(s), Railgun performance: 2126KB/clock
    Found ('human consciousness') 519 time(s), Railgun performance: 2557KB/clock
    Railgun 8x2 i.e. average performance: 1071KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003\_KAZE_strstr>strstr_SHORT-SHOWDOWN_Microsoft.exe
    strstr_SHORT-SHOWDOWN, revision 5, written by Kaze.
    Input Pattern(up to 19 chars): skillessness
    Doing Search for Pattern(12bytes) into String(206908949bytes) line-by-line ...
    LinesEncountered: 2459508
    strstr_Microsoft_hits/strstr_Microsoft_clocks: 0/928
    strstr_Microsoft performance: 215KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    strstr_GNU_C_Library_hits/strstr_GNU_C_Library_clocks: 0/571
    strstr_GNU_C_Library performance: 349KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Railgun_hits/Railgun_clocks: 0/541
    Railgun performance: 369KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_BOOSTED_hits/KarpRabinKaze_BOOSTED_clocks: 0/556
    KarpRabinKaze_BOOSTED performance: 359KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    KarpRabinKaze_hits/KarpRabinKaze_clocks: 0/564
    KarpRabinKaze performance: 354KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Karp_Rabin_hits/Karp_Rabin_clocks: 0/768
    Karp_Rabin performance: 259KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Brute_Force_Dummy_hits/Brute_Force_Dummy_clocks: 0/723
    Brute_Force_Dummy performance: 276KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer-Moore-Horspool_hits/Boyer-Moore-Horspool_clocks: 0/614
    Boyer-Moore-Horspool performance: 325KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    LinesEncountered: 2459508
    Boyer_Moore_Horspool_Kaze_hits/Boyer_Moore_Horspool_Kaze_clocks: 0/632
    Boyer_Moore_Horspool_Kaze performance: 315KB/clock
    StrnglenTRAVERSED: 204449441 bytes
    
    Doing Search for Pattern(12bytes) into String(206908949bytes) as-one-line ...
    Railgun_hits/Railgun_clocks: 0/134
    Railgun performance: 1507KB/clock
    
    Doing Search for 8x2 Patterns into String(206908949bytes) as-one-line ...
    Found ('an') 1987797 time(s), Railgun performance: 300KB/clock
    Found ('to') 1076629 time(s), Railgun performance: 300KB/clock
    Found ('TDK') 0 time(s), Railgun performance: 515KB/clock
    Found ('the') 2114180 time(s), Railgun performance: 403KB/clock
    Found ('fast') 5945 time(s), Railgun performance: 587KB/clock
    Found ('easy') 5191 time(s), Railgun performance: 614KB/clock
    Found ('grmbl') 0 time(s), Railgun performance: 805KB/clock
    Found ('email') 1 time(s), Railgun performance: 716KB/clock
    Found ('pasting') 2 time(s), Railgun performance: 990KB/clock
    Found ('amazing') 323 time(s), Railgun performance: 985KB/clock
    Found ('underdog') 4 time(s), Railgun performance: 1074KB/clock
    Found ('superdog') 0 time(s), Railgun performance: 1167KB/clock
    Found ('participants') 147 time(s), Railgun performance: 1603KB/clock
    Found ('skillessness') 0 time(s), Railgun performance: 1433KB/clock
    Found ('I should have known') 1 time(s), Railgun performance: 1422KB/clock
    Found ('human consciousness') 519 time(s), Railgun performance: 1836KB/clock
    Railgun 8x2 i.e. average performance: 681KB/clock
    
    C:\WorkTemp\Leprechaun_r13++\Visual C++ Toolkit 2003\_KAZE_strstr>
    In my view, when a needle(regardless of its length) must be found in 1++KB haystack Railgun(Intel) dominates, at least for now.
    Attached Files Attached Files
    Last edited by Sanmayce; 31st August 2010 at 19:24. Reason: Added a faster function & MORE PRECISE measuring & Intel C test

  4. #64
    Member Sanmayce's Avatar
    Join Date
    Apr 2010
    Location
    Sofia
    Posts
    57
    Thanks
    0
    Thanked 0 Times in 0 Posts
    bsc(BWT method) mashing en-wikipedia

    Code:
    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
    
    D:\_KAZE_test_Q9550>RUNME_wikipedia.BAT
    
    D:\_KAZE_test_Q9550>time0<ENTER
    The current time is: 18:33:59.51
    Enter the new time:
    
    D:\_KAZE_test_Q9550>copy wikipedia-en-html.tar nul
            1 file(s) copied.
    
    D:\_KAZE_test_Q9550>time0<ENTER
    The current time is: 19:01:03.57
    Enter the new time:
    
    D:\_KAZE_test_Q9550>dir wikipedia-en-html.tar/b 1>wikipedia-en-html.tar.lst
    
    D:\_KAZE_test_Q9550>timer Leprechaun_13+++++_Intel.exe wikipedia-en-html.tar.lst wikipedia-en-html.tar.wrd 4800 y
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Leprechaun(Fast Greedy Word-Ripper), revision 13+++++, written by Svalqyatchx.
    Leprechaun: 'Oh, well, didn't you hear? Bigger is good, but jumbo is dear.'
    Kaze: Let's see what a 3-way hash + 6,602,752 Binary-Search-Trees can give us,
          also the performance of a 3-way hash + 6,602,752 B-Trees of order 3.
    Size of input file with files for Leprechauning: 23
    Allocated memory in MB: 1872
    Size of Input TEXTual file: 223,674,511,360
    |; Word count: 30,974,750,142 of them 12,561,874 distinct; Done: 64/64
    Words per second performance: 9,118,266W/s
    Flushing unsorted words ...
    Time for making unsorted wordlist: 3400 second(s)
    Deallocated memory in MB: 1872
    Allocated memory for words in MB: 141
    Allocated memory for pointers-to-words in MB: 48
    Sorting(with 'MultiKeyQuickSortX26Sort' by J. Bentley and R. Sedgewick) ...
    Sort pass 26/26 ...
    Flushing sorted words ...
    Time for sorting unsorted wordlist: 7 second(s)
    Leprechaun: Done.
    
    Kernel Time  =    58.515 =    1%
    User Time    =  3298.703 =   96%
    Process Time =  3357.218 =   98%
    Global Time  =  3407.423 =  100%
    
    D:\_KAZE_test_Q9550>timer bsc_2.3.0_Intel.exe e wikipedia-en-html.tar wikipedia-en-html.tar.bsc -b32 -m3f
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    wikipedia-en-html.tar compressed 223674511360 into 11190708855 in 4986.250 seconds.
    
    Kernel Time  =   810.531 =   16%
    User Time    = 15706.625 =  314%
    Process Time = 16517.156 =  331%
    Global Time  =  4986.629 =  100%
    
    D:\_KAZE_test_Q9550>timer 7za_9.15_beta.exe a -mx=9 -t7z wikipedia-en-html.tar.7z wikipedia-en-html.tar
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    
    7-Zip (A) 9.15 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-06-20
    Scanning
    
    Creating archive wikipedia-en-html.tar.7z
    
    Compressing  wikipedia-en-html.tar
    
    Everything is Ok
    
    Kernel Time  =   609.890 =    0%
    User Time    = 83596.906 =  126%
    Process Time = 84206.796 =  127%
    Global Time  = 66068.178 =  100%
    
    D:\_KAZE_test_Q9550>7za_9.15_beta.exe b
    
    7-Zip (A) 9.15 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-06-20
    
    RAM size:    2047 MB,  # CPU hardware threads:   4
    RAM usage:    850 MB,  # Benchmark threads:      4
    
    Dict        Compressing          |        Decompressing
          Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
           KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS
    
    22:    9337   312   2910   9083  |   127538   399   2880  11507
    23:    9271   327   2886   9446  |   125143   397   2881  11452
    24:    9153   340   2894   9841  |   123855   400   2872  11490
    25:    8960   348   2936  10230  |   121225   399   2860  11400
    ----------------------------------------------------------------
    Avr:          332   2906   9650               399   2873  11462
    Tot:          365   2890  10556
    
    D:\_KAZE_test_Q9550>dir
     Volume in drive D is Compression
     Volume Serial Number is 9C71-8FF3
    
     Directory of D:\_KAZE_test_Q9550
    
    08/30/2010  09:20 PM    <DIR>          .
    08/30/2010  09:20 PM    <DIR>          ..
    08/29/2010  05:39 AM           583,680 7za_9.15_beta.exe
    08/29/2010  05:39 AM           765,440 bsc_2.3.0_Intel.exe
    08/29/2010  05:39 AM                 2 ENTER
    08/30/2010  06:33 PM    <DIR>          Extracted
    08/30/2010  07:57 PM            19,507 Leprechaun.LOG
    08/29/2010  05:39 AM           515,584 Leprechaun_13+++++_Intel.exe
    08/29/2010  05:39 AM       206,908,949 OSHO.TXT
    08/30/2010  06:32 PM        40,415,911 OSHO.TXT.7z
    08/30/2010  06:30 PM        32,718,277 OSHO.TXT.bsc
    08/30/2010  06:29 PM                10 OSHO.TXT.lst
    08/30/2010  03:46 PM                32 OSHO.TXT.lzt
    08/30/2010  06:29 PM           580,198 OSHO.TXT.wrd
    08/30/2010  03:49 PM               983 RUNME_wikipedia.BAT
    08/29/2010  05:39 AM             4,096 Timer.exe
    06/18/2008  10:02 AM   223,674,511,360 wikipedia-en-html.tar
    08/31/2010  03:42 PM    11,698,602,276 wikipedia-en-html.tar.7z
    08/30/2010  09:20 PM    11,190,708,855 wikipedia-en-html.tar.bsc
    08/30/2010  07:01 PM                23 wikipedia-en-html.tar.lst
    08/30/2010  07:57 PM       146,973,879 wikipedia-en-html.tar.wrd
                   3 Dir(s)  723,500,347,392 bytes free
    
    D:\_KAZE_test_Q9550>md Extracted
    A subdirectory or file Extracted already exists.
    
    D:\_KAZE_test_Q9550>timer bsc_2.3.0_Intel.exe d wikipedia-en-html.tar.bsc Extracted\wikipedia-en-html.tar
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    wikipedia-en-html.tar.bsc decompressed 11190708855 into 223674511360 in 2815.235 seconds.
    
    Kernel Time  =   614.046 =   21%
    User Time    =  9062.625 =  321%
    Process Time =  9676.671 =  343% 
    Global Time  =  2815.594 =  100%
    
    D:\_KAZE_test_Q9550>fc wikipedia-en-html.tar Extracted\wikipedia-en-html.tar
    Comparing files wikipedia-en-html.tar and EXTRACTED\WIKIPEDIA-EN-HTML.TAR
    FC: no differences encountered
    
    D:\_KAZE_test_Q9550>del Extracted\wikipedia-en-html.tar
    
    D:\_KAZE_test_Q9550>timer 7za_9.15_beta.exe e -oExtracted wikipedia-en-html.tar.7z
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    
    7-Zip (A) 9.15 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-06-20
    
    Processing archive: wikipedia-en-html.tar.7z
    
    Extracting  wikipedia-en-html.tar
    
    Everything is Ok
    
    Size:       223674511360
    Compressed: 11698602276
    
    Kernel Time  =   292.343 =    9%
    User Time    =  1079.375 =   35%
    Process Time =  1371.718 =   45%
    Global Time  =  3017.750 =  100%
    
    D:\_KAZE_test_Q9550>fc wikipedia-en-html.tar Extracted\wikipedia-en-html.tar
    Comparing files wikipedia-en-html.tar and EXTRACTED\WIKIPEDIA-EN-HTML.TAR
    FC: no differences encountered
    
    D:\_KAZE_test_Q9550>del Extracted\wikipedia-en-html.tar
    CPU Properties:
    CPU Type: QuadCore Intel Core 2 Quad Q9550, 2833 MHz (8.5 x 333)
    CPU Alias: Yorkfield
    Instruction Set: x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1
    Original Clock: 2833 MHz
    L1 Code Cache: 32 KB per core
    L1 Data Cache: 32 KB per core
    L2 Cache: 2x 6 MB (On-Die, ECC, ASC, Full-Speed)
    Package Type: 775 Contact LGA
    Transistors: 820 million
    Process Technology: 45 nm, CMOS, Cu, High-K Gate

    Front Side Bus Properties:
    Bus Type: Intel AGTL+
    Bus Width: 64-bit
    Real Clock: 333 MHz (QDR)
    Effective Clock: 1333 MHz
    Bandwidth: 10665 MB/s

    Memory Bus Properties:
    Bus Type: Dual DDR3 SDRAM
    Bus Width: 128-bit
    DRAM:FSB Ratio: 16:8
    Real Clock: 667 MHz (DDR)
    Effective Clock: 1333 MHz
    Bandwidth: 21331 MB/s

    Miscellanea:
    OS: Windows 32bit XP SP3
    Paging(swap) file: DISABLED
    Memory: 2x2GB Dual DDR3-1333
    CL-RCD-RP-RAS: 8-8-8-20 CR2
    Memory Copy: 7405MB/s
    Memory Latency: 66.9 ns
    All tools: 32bit versions

    No code has to be inserted here.Note1: HDD Burst Read was not inferior: 223674511360 / ((19*3600)+(1*60)+3 - ((18*3600)+(33*60)+59) = 1624s) = 131MB/s
    Note2: bsc is a super-heavy-TEXT-grinder or, as NE-YO sings, a beautiful [TEXT] monster: 10672MB(wikipedia-en-html.tar.bsc) vs 11156MB(wikipedia-en-html.tar.7z)
    Note3: Obviously the HDD write speed is not enough to show full power of 7-zip decompression, which is its strongest feature.
    Last edited by Sanmayce; 4th September 2010 at 21:53.

  5. #65
    Member Sanmayce's Avatar
    Join Date
    Apr 2010
    Location
    Sofia
    Posts
    57
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Diamond or Graphite, which is more useful!

    Personally I prefer the latter, having it it is possible to make the former but not vice versa. The difficult way(compression) to transform it reminds me of some principal things, so my new TEXT search tool is called GRAFFITH.

    I am eager to share with all TEXT decompress-search-dump fans my dummy(but precious for me) wrapper over the sub-excellent bsc console tool from Ilya Grebnov.
    It is revision 1 and only gives the outline: which is to search transparently for a string patterns given via GRAFFITH.INI file into very tight archives.
    In next revision wildcard(5 wildcards) searching will be added and more functionality ... DONE

    I am very thankful to Grebnov mainly for his open attitude not so much for his super-mashing tool. I do not know whether other such a powerful-modern-original TEXT tool exists as open-source, OK except 7-zip by Igor Pavlov. In my opinion(no false humbleness here) open projects show something very rare and purely religious based: sharing with other souls - which by itself is a pillar of humanity.

    The test on OSHO.TXT follows:
    Code:
    D:\INTELC~1>dir
    
    09/02/2010  07:06 AM           761,856 GRAFFITH.exe
    09/02/2010  04:19 AM               152 GRAFFITH.INI
    09/01/2010  02:50 AM       206,908,949 OSHO.TXT
    09/02/2010  05:47 AM        34,188,775 OSHO.TXT.bsc
    
    D:\INTELC~1>timer GRAFFITH _ OSHO.TXT.bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 01, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    Size of GRAFFITH.INI: 152
    Allocating memory 384 MB ... OK
    GRAFFITH: Merging chunk of size 12582912 bytes at 0 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 12582912 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 25165824 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 37748736 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 62914560 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 50331648 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 75497472 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 88080384 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 113246208 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 100663296 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 138412032 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 125829120 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 150994944 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 163577856 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 176160768 offset...
    GRAFFITH: Merging chunk of size 12582912 bytes at 188743680 offset...
    GRAFFITH: Merging chunk of size 5582357 bytes at 201326592 offset...
    Searching for 'an' ...
    Railgun_totalhits: 1987797
    Searching for 'to' ...
    Railgun_totalhits: 1076629
    Searching for 'TDK' ...
    Railgun_totalhits: 0
    Searching for 'the' ...
    Railgun_totalhits: 2114180
    Searching for 'fast' ...
    Railgun_totalhits: 5945
    Searching for 'easy' ...
    Railgun_totalhits: 5191
    Searching for 'grmbl' ...
    Railgun_totalhits: 0
    Searching for 'email' ...
    Railgun_totalhits: 1
    Searching for 'pasting' ...
    Railgun_totalhits: 2
    Searching for 'amazing' ...
    Railgun_totalhits: 323
    Searching for 'underdog' ...
    Railgun_totalhits: 4
    Searching for 'superdog' ...
    Railgun_totalhits: 0
    Searching for 'participants' ...
    Railgun_totalhits: 147
    Searching for 'skillessness' ...
    Railgun_totalhits: 0
    Searching for 'I should have known' ...
    Railgun_totalhits: 1
    Searching for 'human consciousness' ...
    Railgun_totalhits: 519
    
    Kernel Time  =     0.500 =    2%
    User Time    =    36.312 =  176%
    Process Time =    36.812 =  178%
    Global Time  =    20.606 =  100%
    
    D:\INTELC~1>
    
    Ok, revision 1 is in the past, revision 2 is here.
    
    Added: GRAFFITH.lst gives the ability to search into multiple BSC archives, each line is a BSC file.
    Added: Blunderbuss(wildcard search function) as the name suggests is used for unexact hitting.
    Added: GRAFFITH.log contains wildcard hits, each line is a hit.
    
    D:\INTELC~1>GRAFFITH.exe
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    Usage: GRAFFITH <e|E|d|D|_> inputfile outputfile <switches>
    
    Options:
       E encodes without writing i.e. test-encode
       D decodes without writing i.e. test-decode
       _ decodes without writing plus searching, MaxSizeOfDecodedBuffer = 384MB
    Switches:
      -b<size> Block size in megabytes, default: -b12
                 minimum: -b1, maximum: -b1024
      -m<algo> Block sorting algorithm, default: -m3
                 -m0 Sort Transform of order 3
                 -m1 Sort Transform of order 4
                 -m2 Sort Transform of order 5
                 -m3 Burrows Wheeler Transform
      -c<ctx>  Contexts for sorting, default: -cf
                 -cf Following contexts
                 -cp Preceding contexts
                 -ca Autodetect (experimental)
      -H<size> LZP hash table size in bits, default: -H16
                 minimum: -H10, maximum: -H28
      -M<size> LZP minimum match length, default: -M128
                 minimum: -M4, maximum: -M255
      -f       Enable fast compression mode, default: disable
      -l       Enable LZP, default: enable
      -r       Enable Reordering, default: disable
      -s       Enable Segmentation, default: disable
      -p       Disable all preprocessing techniques
      -t       Disable parallel blocks processing, default: enable
      -T       Disable multi-core systems support, default: enable
    
    Switches may be combined into one, like -b128p
    
    Note1: GRAFFITH,ini: each line represents a pattern
           GRAFFITH,lst: each line represents a BSC file
           GRAFFITH,log: each line is a Blunderbuss(wildcard function) hit
    Note2: If pattern contains at least one wildcard then Blunderbuss is evoked for
           each line in the file, otherwise Railgun is evoked for the entire file.
    Note3: Five wildcards are available:
           wildcard '*' any character(s) or empty,
           wildcard '@' any character or empty,
           wildcard '#' any character and not empty,
           wildcard '$' any ALPHA character and not empty,
           wildcard '%' any NON-ALPHA character and not empty.
    Note4: Due to different line endings(CRLF in Windows; LF in UNIX)
           you must add a '@' wildcard in place of CR:
           for example in case of searching for '*.pdf' write '*.pdf@'.
    Note5: A pseudo bug exists uncrushed - End-Of-File must be LF character.
    
    Example1: GRAFFITH e Caterpillar.47.RAFT6.txt Caterpillar.47.RAFT6.txt.bsc -m3f
    Example2: GRAFFITH d Caterpillar.47.RAFT6.txt.bsc Caterpillar.47.RAFT6.txt
    Example3: GRAFFITH _
    
    D:\INTELC~1>type GRAFFITH.ini
    an
    *to?@
    TDK
    the
    *%fast$$$%*
    easy
    grmbl
    email
    pasting
    amazing
    *underdog*
    superdog
    participants
    skillessness
    I should have known
    human consciousness
    
    D:\INTELC~1>type GRAFFITH.lst
    .\Caterpillar.001.RAFT3.txt.bsc
    .\Caterpillar.002.RAFT3.txt.bsc
    .\Caterpillar.003.RAFT3.txt.bsc
    .\Caterpillar.004.RAFT3.txt.bsc
    
    D:\INTELC~1>GRAFFITH.exe _
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    Size of GRAFFITH.lst: 128
    Size of GRAFFITH.ini: 164
    Allocating memory 384 MB ... OK
    Decompressing '.\Caterpillar.001.RAFT3.txt.bsc' ...
    Entire-file-searching with Railgun for 'an' ...
    Railgun_totalhits: 1218094
    Single-line-searching with Blunderbuss for '*to?@' ...
    Blunderbuss_totalhits: 65
    Entire-file-searching with Railgun for 'TDK' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'the' ...
    Railgun_totalhits: 1288512
    Single-line-searching with Blunderbuss for '*%fast$$$%*' ...
    Blunderbuss_totalhits: 252
    Entire-file-searching with Railgun for 'easy' ...
    Railgun_totalhits: 1593
    Entire-file-searching with Railgun for 'grmbl' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'email' ...
    Railgun_totalhits: 89
    Entire-file-searching with Railgun for 'pasting' ...
    Railgun_totalhits: 1
    Entire-file-searching with Railgun for 'amazing' ...
    Railgun_totalhits: 202
    Single-line-searching with Blunderbuss for '*underdog*' ...
    Blunderbuss_totalhits: 1
    Entire-file-searching with Railgun for 'superdog' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'participants' ...
    Railgun_totalhits: 74
    Entire-file-searching with Railgun for 'skillessness' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'I should have known' ...
    Railgun_totalhits: 5
    Entire-file-searching with Railgun for 'human consciousness' ...
    Railgun_totalhits: 28
    Decompressing '.\Caterpillar.002.RAFT3.txt.bsc' ...
    Entire-file-searching with Railgun for 'an' ...
    Railgun_totalhits: 1365813
    Single-line-searching with Blunderbuss for '*to?@' ...
    Blunderbuss_totalhits: 63
    Entire-file-searching with Railgun for 'TDK' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'the' ...
    Railgun_totalhits: 1522986
    Single-line-searching with Blunderbuss for '*%fast$$$%*' ...
    Blunderbuss_totalhits: 330
    Entire-file-searching with Railgun for 'easy' ...
    Railgun_totalhits: 1524
    Entire-file-searching with Railgun for 'grmbl' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'email' ...
    Railgun_totalhits: 3
    Entire-file-searching with Railgun for 'pasting' ...
    Railgun_totalhits: 2
    Entire-file-searching with Railgun for 'amazing' ...
    Railgun_totalhits: 251
    Single-line-searching with Blunderbuss for '*underdog*' ...
    Blunderbuss_totalhits: 2
    Entire-file-searching with Railgun for 'superdog' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'participants' ...
    Railgun_totalhits: 148
    Entire-file-searching with Railgun for 'skillessness' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'I should have known' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'human consciousness' ...
    Railgun_totalhits: 71
    Decompressing '.\Caterpillar.003.RAFT3.txt.bsc' ...
    Entire-file-searching with Railgun for 'an' ...
    Railgun_totalhits: 1227167
    Single-line-searching with Blunderbuss for '*to?@' ...
    Blunderbuss_totalhits: 49
    Entire-file-searching with Railgun for 'TDK' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'the' ...
    Railgun_totalhits: 1483742
    Single-line-searching with Blunderbuss for '*%fast$$$%*' ...
    Blunderbuss_totalhits: 641
    Entire-file-searching with Railgun for 'easy' ...
    Railgun_totalhits: 1571
    Entire-file-searching with Railgun for 'grmbl' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'email' ...
    Railgun_totalhits: 12
    Entire-file-searching with Railgun for 'pasting' ...
    Railgun_totalhits: 3
    Entire-file-searching with Railgun for 'amazing' ...
    Railgun_totalhits: 242
    Single-line-searching with Blunderbuss for '*underdog*' ...
    Blunderbuss_totalhits: 3
    Entire-file-searching with Railgun for 'superdog' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'participants' ...
    Railgun_totalhits: 68
    Entire-file-searching with Railgun for 'skillessness' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'I should have known' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'human consciousness' ...
    Railgun_totalhits: 440
    Decompressing '.\Caterpillar.004.RAFT3.txt.bsc' ...
    Entire-file-searching with Railgun for 'an' ...
    Railgun_totalhits: 760574
    Single-line-searching with Blunderbuss for '*to?@' ...
    Blunderbuss_totalhits: 63
    Entire-file-searching with Railgun for 'TDK' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'the' ...
    Railgun_totalhits: 773945
    Single-line-searching with Blunderbuss for '*%fast$$$%*' ...
    Blunderbuss_totalhits: 279
    Entire-file-searching with Railgun for 'easy' ...
    Railgun_totalhits: 1283
    Entire-file-searching with Railgun for 'grmbl' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'email' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'pasting' ...
    Railgun_totalhits: 3
    Entire-file-searching with Railgun for 'amazing' ...
    Railgun_totalhits: 92
    Single-line-searching with Blunderbuss for '*underdog*' ...
    Blunderbuss_totalhits: 2
    Entire-file-searching with Railgun for 'superdog' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'participants' ...
    Railgun_totalhits: 40
    Entire-file-searching with Railgun for 'skillessness' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'I should have known' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'human consciousness' ...
    Railgun_totalhits: 88
    
    GRAFFITH: Total Blunderbuss(wildcard) hits: 1750
    GRAFFITH: Done.
    
    D:\INTELC~1>type GRAFFITH.log
    By one we decide that in this lifetime we will make spiritual advancement, but at the next moment the other force, maya, or illusory energy, says, "What is all this trouble that you're going to?
    Now do you, in your message, give the young people something to hang on to?
    What will be the motto?
    What does one delight in, welcome and remain hanging on to?
    THE THINGS WE CLING TO What are we clinging to?
    What is that which we can awaken to, what is the Dharma which we can awaken to?
    What, then, are the four noble truths that you must look into?
    What is being clung to?
    And why is it that the voice of Dhamma, the aid in drawing-out, is never listened to?
    How is it that the facts of unsatisfactoriness and noself have not been referred to?
    What are we clinging to?
    And what, then, of the future-now that I can no longer hope to make progress, what have I to look forward to?
    -If, monks, you were to cling to this cleansed and purified view, if you were to treasure it, adhere to it, or cherish it, would you then, monks, be comprehending the teaching of the parable of the raftaq as something for crossing over with, not for holding on to?
    ...
    Who doesn't need to?
    Now when the Essence of your Perception confronts these eight states, where can it be returned to?
    Do you mean the secrets about Mescalito?
    How about Mescalito?
    Where is Mescalito?
    Did your benefactor teach you all this about Mescalito?
    Do you see how stupid it is to ask if he is like a person you can talk to?
    ...
    And what of the 'fashions' that he enslaves himself to?
    If the road also moves, what journey can the car make and whereto?
    How can a person who has no respect for the land of his birth be respected by the land he attaches himself to?
    Whom are you praying to?
    What is it you have gained from all the pujas you have done and all the discourses you have listened to?
    Now, who does this house really belong to?
    What is the significance of three crores (Mukkoti) referred to?
    Who was the divine teacher whose feet He was referring to?
    Where are you fleeing to?
    com/toto?
    Did you grieve when the body underwent many changes hitherto?
    What does it relate to?
    Where have we come to?
    If today is squandered so Will tomorrow help you to?
    How is the Godhead who fills the Universe to be referred to?
    Perhaps, you doubt whether fighting is the best use that time can be put to?
    Bharatha was on the brink of collapse, Kaikeyi replied quick and fast: Whereto?
    When that I is gone, whom to speak to?
    Did you grieve when the body underwent many changes hitherto?
    What is Shinto?
    When your child is seriously ill, whom do you turn to?
    Who was the divine teacher whose feet He was referring to?
    How many parties you went to?
    What does it relate to?
    How can we revere him, as you want us to?
    How can a person who has no respect for the land of his birth be respected by the land he attaches himself to?
    Where have we come to?
    Do not ask which state you belong to?
    Where have we come to?
    How is the Godhead who fills the Universe to be referred to?
    Perhaps, you doubt whether fighting is the best use that time can be put to?
    Bharatha was on the brink of collapse, Kaikeyi replied quick and fast: "Whereto?
    What kind of adults will they grow up into?
    What kind of adults will they grow up into?
    Now, who does this house really belong to?
    When that I is gone, whom to speak to?
    But, when Rama himself inflicts pain, whom am I to cry out to?
    ...
    Can this political Svarajya eradicate human sufferings and ignorance in toto?
    Do you want to be prostrated to?
    Where can his Self depart to?
    But which footprints should I put my feet into?
    Larry: Is it possible for you to visit Toronto?
    The inability to?
    What is this personality that is referred to?
    What does this situation point to?
    Do we feel wretched when nobody speaks to us, and there is none whom we can speak to?
    What is it that the seeker is emotionally tied to?
    What do you refer to?
    Tell me, O grandfather, what is the end that these attain to?
    What is it that you are attracted to?
    Whose voice are you going to listen to?
    This is I, this is I, that is I, this is I - which 'I' are you referring to?
    What is this sort of ignorance that you refer to?
    Yajnavalkya questions Sakalya: "Do you know what is this Supreme Being I am referring to?
    What are all these due to?
    What do you refer to?
    ajo nityah sasvato?
    This subject is the principal theme of Plato?
    Only by devotion am I capable of being known, seen and entered into?
    Knowing, seeing and entering into?
    And what is the knowledge pattern we are referring to?
    Where have they vanished into?
    What then is the mortality that is being referred to?
    org/ THE IDEAL OF A SADHAKA To have such a fiery renunciation and the spirit of service: what is it due to?
    Can this political Svarajya eradicate human sufferings and ignorance in toto?
    Do you want to be prostrated to?
    Where can his Self depart to?
    But which footprints should I put my feet into?
    Larry: Is it possible for you to visit Toronto?
    The inability to?
    What is this personality that is referred to?
    What does this situation point to?
    Shuchinaam Shreemataam Gehe, Yogabhrashto?
    Do you want to be prostrated to?
    Do we feel wretched when nobody speaks to us, and there is none whom we can speak to?
    Do we feel wretched when nobody speaks to us, and there is none whom we can speak to?
    What does all this amount to?
    What do you refer to?
    ; and then add to this why the question where where does the mind run to?
    Whenever I meet Gulzarilal Nandaji he always says, Swamiji, what has our nation come to?
    And the young man said, What is it that you are referring to?
    What could these differences be due to?
    ; and then add to this why the question where where does the mind run to?
    Whenever I meet Gulzarilal Nandaji he always says, Swamiji, what has our nation come to?
    ajo nityah sasvato?
    If the whole world raises itself against you, it will be powerless to deprive you of that bounty you have access to?
    What is it that you are referring to?
    What could these differences be due to?
    Na tatra suryo bhati na chandra-tarakam nema vidyuto bhanti kuto?
    So that is the most important place for you to turn your attention to?
    ajo nityah sasvato?
    What then is the mortality that is being referred to?
    How to?
    When you wake up in the morning, what do you wake up to?
    Is it possible for the mind to cease these activities, and if the activities cease, how do you know that all experiences also are put an end to?
    How to?
    When you wake up in the morning, what do you wake up to?
    Is it possible for the mind to cease these activities, and if the activities cease, how do you know that all experiences also are put an end to?
    Do you want to be prostrated to?
    Occasional fasting once a month or when passion troubles you much, will suffice.
    During fasting you should not even think of the various articles of food.
    During fasting, avoid company.
    A Yogi should always avoid fear, anger, laziness, too much sleep or walking, and too much food or fasting.
    I observe fasting, resting, airing, bathing, breathing, exercising, sun-bathing and enjoy freedom, beauty, courage, poise and health.
    Thoughtful men soon subdue their senses by fasting.
    Charity, the performance of duties of his own Varna and Ashrama, the observance of Yamas and Niyamas, the study of the Vedas, virtuous actions and the good observances as fasting on Ekadasi all these lead to the control of mind.
    The important features of this religious function are rigid fasting for twentyfour hours and sleepless vigil during the night.
    My devotee gives Me greater happiness by mere fasting than by ceremonial baths, and offerings of flowers, sweets, incense, etc.
    The hunter was able to enter My abode and ward off death by simple fasting and offering of a few Bilva leaves, however involuntary it might be because it was the night of Sivaratri.
    She must take recourse to occasional fasting.
    I hear that fasting will cut short the life of man.
    By fasting, the body, mind, Prana and nerves will be renovated, vivified.
    All the diseases can be destroyed by fasting.
    If a glutton takes to fasting, he will find it difficult.
    A man of Mitahara will take great pleasure in fasting.
    But Gandhiji and others have stressed the importance of fasting.
    Moreover, they point out that fasting helps self-control.
    How is it that you do not allow frequent fasting?
    But, too much fasting weakens the body and the mind and retards spiritual Sadhana.
    I am also a strong votary of fasting.
    As the vast majority are afraid of fasting too much, I have prescribed only a day of fasting in a month.
    Sincere repentance, Japa, fasting and charity can destroy the evil effects of bad Karma.
    Too much fasting brings about extreme weakness.
    Japa of God's Name, charity and fasting will destroy at once any amount of sin.
    Methods To Control Lust Just as you control the itching sensation in an eczematous part of the leg or scabies of the hand, you must control the itching from lust by Viveka, Vichara, Brahma-Bhavana, light Sattvic diet, fasting, Pranayama, Uddiyana, Bandha, Satsanga, study of the Gita, Japa, prayer, etc.
    Fasting Fasting weakens the sex Indriya.
    Passionate young men and ladies should take recourse to occasional fasting.
    You will have to impose self-restraint and punishment on yourself by way of fasting for a day whenever Udvega (agitation) manifests in the mind.
    You will have to punish it by fasting for every serious mistake it does.
    No medicine, fasting or other therapeutics could be of any avail.
    One day I was fasting.
    Deep meditation, austerities such as fasting, standing in the ice cold waters of the Ganga during the early hours of the morning all of these he combined with his daily round of service to the sick and needy mendicants and Sadhus.
    A fasting of the senses and the mind is very painful to the individual, because of its thereby nearing the danger of self-extinction through non-relation.
    Swamiji frequently undergoes very long fasts, for fasting is the only thing that seems to relieve his liver condition.
    But even while fasting, he goes on with his programmes.
    (Once in the West, after a very long talk during one of his fasting periods, Swamiji fainted and fell; but very quickly gathering himself together, he got up drank a little water, excused himself for the interruption and went on with his talk.
    The Lord appeared before the king in his dream and said: Oh king, My Bhakta Tirunavukkarasar is fasting, to have My Darshan.
    The thief is caught and punished severely by fasting, saltless diet, etc.
    He fastens the mind on to this image.
    Austerities like occasional fasting and observance of silence increase the power of endurance.
    A Yogi should always avoid fear, anger, laziness, too much sleep or waking and too much food and fasting.
    In prayer and fasting, in praise and meditation, In Japa and Asana, in Tratak and concentration, only God I saw.
    Selfish work retards spiritual progress and fastens one more chain to your feet.
    If you observe fasting during Ekadasi days to propitiate Lord Hari, and if your mind constantly thinks of various kinds of delicious food, you will not get the benefits of fasting.
    In doing Prayaschitta the offender actually suffers, he punishes himself by long fasting and other ordeals as described above.
    Complete fasting on Ekadasi and Pradosha days destroys many sins.
    I am doing Tapas, fasting and charity.
    Sitting before fire, company of women and worldly-minded people, Yatra, long walk, carrying heavy burdens, cold bath in the early morning, harsh words, speaking untruth, dishonest practices, theft, killing animals, Himsa of all kinds either in thought, word or deed, hatred and enmity towards any person, fighting, quarrelling, pride, double-dealing, intriguing, back-biting, tale-bearing, crookedness, talks other than those of Atman and Moksha, cruelty towards animals and men, too much fasting or eating only once every day, etc.
    A Yogi should always avoid fear, anger, laziness, too much sleep or waking and too much food or fasting.
    ...
    Eating or sacrificing, giving gifts, Praying or fasting, let it all be done For Me, as Mine.
    It was only in the year 1960 that a very eminent physician from New Delhi, who was also the personal physician of the President of India, insisted that Gurudev stop this habit of fasting because of his diabetes.
    Some of your ancients who were filled with a desire for attaining supreme wisdom, to become divinely perfected beings, who wholeheartedly dedicated themselves to this quest went away to the forest, lived in seclusion, practised severe austerities, lived on leaves and water, took nothing that would be likely to stimulate their passions; if such people could have a spiritual downfall when a temptation suddenly arose, then what about those who eat all sorts of rich food, have soft beds and nice pillows with all comforts and conveniences, no austerity, no tapasya, no penance, no mortification, no self-denial, no fasting, no prayer, no vigil?
    We start fasting, we observe mauna, we do not sleep, we stop the usual activities of life, and keep quiet somewhere, doing nothing.
    Because, when the seeker takes to Yoga, he is likely to be stirred up into an emotion of holiness and religiosity, which may lead him to think of such items of exceptional practice as fasting, reducing one's sleep, eating less, talking nothing and so on.
    Just as a drug or a medicine acts better on the body when the body is cleansed by prior fasting, control of the mind becomes a little easier when it is not physically placed in an atmosphere of untoward attraction or repulsion.
    Because of the fear of fasting, you will be careful not to break the vow.
    Too much fasting is injurious during the practice of Yoga.
    Sometimes fasting is better than eating; sometimes fasting is bad and eating is good.
    Then, he started fasting: "Let me not eat.
    Actually, they did not understand, nor did Buddha understand at that time, whether fasting is good, or eating is good.
    Introduce fasting or Phalahara on Ekadasi days.
    Do not spoil your health by too much fasting.
    68 Fasting a purificatory exercise .
    So also, the senses must be controlled by various methods such as fasting, restriction in diet, Pranayama, Japa, Kirtan, meditation, Vichara or enquiry of Who am I?
    My face was pale with fasting and my mind within my frigid body was burning with desire; the fire of lust would still flame up in a body that already seemed to be dead.
    Dietetic restrictions and fasting are very useful auxiliaries in controlling the camel mind and in the attainment of Brahmacharya.
    Fasting a purificatory exercise Fasting controls passion.
    Passionate young men and ladies should take recourse to occasional fasting.
    Just as impure gold is rendered pure by melting it in the crucible again and again, so also, the impure mind is rendered purer and purer by fasting again and again.
    Young, robust Brahmacharins should observe fasting whenever passion troubles them.
    You will have very good meditation during fasting, as the mind is calm.
    The chief object in fasting is to practice Dhyana rigorously during that period as all the Indriyas are calm.
    Avoid excessive fasting.
    During fasting, the internal digestive organs such as the stomach, the liver and the pancreas take rest.
    Diseases that are pronounced incurable by allopaths and homoeopaths are cured by fasting.
    Manu, the Hindu law-giver, prescribes in his code the remedy of fasting for removal of the five capital sins also.
    It is better to drink a large quantity of water, either tepid or cold, according to temperament and inclination, during fasting.
    You can take an enema daily during fasting.
    You can turn out more mental work during fasting.
    Those who are in the habit of fasting will rejoice.
    Do more Japa of Gayatri or any Mantra during fasting.
    You will have to utilise the fasting days for higher spiritual purposes and in the contemplation of God.
    Will you start the fasting Tapasya from the very second you read these lines?
    Do not drink even water on those fasting days.
    Or do you want to become the fastest Olympic runner or weightlifter in this world?
    ...
    The Sutra declares that there should be no omission of it even on days of fasting, as the Sruti attaches much importance to it.
    The Jabala Sruti says it must be observed even on days of fasting by sipping at least a few drops of water.
    This Sutra refutes the view expressed in the last Sutra, and declares that Pranagnihotra, need not be performed on fasting days, because the Sruti expressly declares, "Therefore the first food which comes is meant for Homa.
    The Sruti gives importance to this only and not that it should be observed even on days of fasting.
    If knowledge be originated by sacrifices, gifts, penance and fasting, what is the necessity of other qualifications like Sama (serenity) and Dama (selfrestraint)?
    Moreover knowledge of Brahman may be attained by the special grace of the gods due to Japa, fasting and worship of gods.
    A widower who is not a householder in the proper sense of the term, can attain knowledge of Brahman through special acts like Japa, fasting, prayer, which are not opposed to the condition of those who do not belong to any Ashrama.
    68 Fasting a purificatory exercise .
    So also, the senses must be controlled by various methods such as fasting, restriction in diet, Pranayama, Japa, Kirtan, meditation, Vichara or enquiry of Who am I?
    My face was pale with fasting and my mind within my frigid body was burning with desire; the fire of lust would still flame up in a body that already seemed to be dead.
    Dietetic restrictions and fasting are very useful auxiliaries in controlling the camel mind and in the attainment of Brahmacharya.
    Fasting a purificatory exercise Fasting controls passion.
    Passionate young men and ladies should take recourse to occasional fasting.
    Just as impure gold is rendered pure by melting it in the crucible again and again, so also, the impure mind is rendered purer and purer by fasting again and again.
    Young, robust Brahmacharins should observe fasting whenever passion troubles them.
    You will have very good meditation during fasting, as the mind is calm.
    The chief object in fasting is to practice Dhyana rigorously during that period as all the Indriyas are calm.
    Avoid excessive fasting.
    During fasting, the internal digestive organs such as the stomach, the liver and the pancreas take rest.
    Diseases that are pronounced incurable by allopaths and homoeopaths are cured by fasting.
    Manu, the Hindu law-giver, prescribes in his code the remedy of fasting for removal of the five capital sins also.
    It is better to drink a large quantity of water, either tepid or cold, according to temperament and inclination, during fasting.
    You can take an enema daily during fasting.
    You can turn out more mental work during fasting.
    Those who are in the habit of fasting will rejoice.
    Do more Japa of Gayatri or any Mantra during fasting.
    You will have to utilise the fasting days for higher spiritual purposes and in the contemplation of God.
    Will you start the fasting Tapasya from the very second you read these lines?
    Do not drink even water on those fasting days.
    Or do you want to become the fastest Olympic runner or weightlifter in this world?
    I have come to you after fifteen days of fasting.
    Anasakyana is a vow of fasting.
    This vow of fasting which people engage themselves in is also equivalent to Brahmacharya.
    Therefore, this imperishable character of the Atman is comparable with the imperishable results that accrue to one by the practice of the religious vow of fasting.
    His experience in fasting has given him power over his body, which he never considers his.
    To me this Gandhi year really signifies a Ram-Nam year as well as a year of truth-speaking, promise-keeping, self-searching, fasting and praying and selfless serving.
    Swamiji noted that plants were drying out and taught us a lesson by fasting.
    STORE-HOUSE OF ENERGY Once in the West, after a very long talk during one of his fasting periods, Swamiji fainted and fell; but very quickly gathering himself together, he got up, drank a little water, excused himself for the interruption and went on with his talk.
    My face was pale with fasting; my mind within my frigid body was burning with desire; the fire of lust would still flame up in a body that already seemed to be dead.
    Does guest go fasting, come uninvited?
    Punish yourself by fasting if you tell a lie and record the lies in the diary.
    Complete fasting helps to control the sleep.
    During fasting avoid company.
    Watch every Indriya carefully and curb it by suitable methods, such as fasting, Mouna, Tratak, celibacy, renunciation of articles, Dama and Pratyahara.
    Even the sin of slaying a Brahmin is expiated by the power of fasting on this day.
    My devotees give me greater happiness by mere fasting than by ceremonial baths and offerings of flowers, sweets and incense.
    Orthodox people in South India observe complete fasting and vigil even on ordinary Ekadashi days.
    Benefits of Fasting Nowadays, many educated people do not observe fasting on this sacred day.
    Just as impure gold is rendered pure by melting it in the crucible again and again, so also this impure mind is rendered purer by repeated fasting.
    Young and robust Brahmacharis (celibates) should observe fasting whenever passion troubles them.
    The chief object of fasting is to render the system calm so that one is able to practise meditation rigorously during that period.
    However, avoid excessive fasting.
    In his code, the Manu Smriti, the great Hindu lawgiver, Manu, prescribes fasting for the removal of the five capital sins.
    Diseases that are pronounced incurable by doctors are cured by fasting.
    All diseases have their origin in overeating and verily fasting is the only method to cure this.
    Complete fasting helps to control sleep.
    During fasting avoid all company.
    The Hindus now observe this Paksha with great faith, with strict regulation, taking bath thrice, with partial fasting, etc.
    Madhva has prescribed a rigorous kind of fasting to his followers.
    It was only in the year 1960 that a very eminent physician from New Delhi, who was also the personal physician of the President of India, insisted that Gurudev stop this habit of fasting because of his diabetes.
    Some of your ancients who were filled with a desire for attaining supreme wisdom, to become divinely perfected beings, who wholeheartedly dedicated themselves to this quest went away to the forest, lived in seclusion, practised severe austerities, lived on leaves and water, took nothing that would be likely to stimulate their passions; if such people could have a spiritual downfall when a temptation suddenly arose, then what about those who eat all sorts of rich food, have soft beds and nice pillows with all comforts and conveniences, no austerity, no tapasya, no penance, no mortification, no self-denial, no fasting, no prayer, no vigil?
    At the end of 40 days of such fasting He was hungry.
    First the grosser forms of self-punishment, like fasting, etc.
    Similarly in the case of prayer and fasting.
    Prayer is his spiritual food; and fasting is a natural corollary to it.
    What, then, is the meaning of making a show of prayer and fasting?
    The sacrifice of Gautama Vajasravasa, the feelings of the lad Nachiketas in respect of the charities and the philanthropic acts of his father, the rising of the soul of Nachiketas to the abode of Yama, and his fasting for three days in that abode, the appearance of Yama after three days and nights and bestowing of boons of a threefold character upon Nachiketas, and the wonderful instructions Yama gave to Nachiketas, are all descriptions of the stages of the rise of the soul to the Absolute.
    Occasional fasting once a month or when passion troubles you much, will suffice.
    During fasting you should not even think of the various articles of food.
    During fasting, avoid company.
    A Yogi should always avoid fear, anger, laziness, too much sleep or walking, and too much food or fasting.
    I observe fasting, resting, airing, bathing, breathing, exercising, sun-bathing and enjoy freedom, beauty, courage, poise and health.
    Thoughtful men soon subdue their senses by fasting.
    Charity, the performance of duties of his own Varna and Ashrama, the observance of Yamas and Niyamas, the study of the Vedas, virtuous actions and the good observances as fasting on Ekadasi all these lead to the control of mind.
    The important features of this religious function are rigid fasting for twentyfour hours and sleepless vigil during the night.
    My devotee gives Me greater happiness by mere fasting than by ceremonial baths, and offerings of flowers, sweets, incense, etc.
    The hunter was able to enter My abode and ward off death by simple fasting and offering of a few Bilva leaves, however involuntary it might be because it was the night of Sivaratri.
    6 SANCTITY OF WOMANHOOD She must take recourse to occasional fasting.
    I hear that fasting will cut short the life of man.
    By fasting, the body, mind, Prana and nerves will be renovated, vivified.
    All the diseases can be destroyed by fasting.
    If a glutton takes to fasting, he will find it difficult.
    A man of Mitahara will take great pleasure in fasting.
    But Gandhiji and others have stressed the importance of fasting.
    Moreover, they point out that fasting helps self-control.
    How is it that you do not allow frequent fasting?
    But, too much fasting weakens the body and the mind and retards spiritual Sadhana.
    I am also a strong votary of fasting.
    As the vast majority are afraid of fasting too much, I have prescribed only a day of fasting in a month.
    Sincere repentance, Japa, fasting and charity can destroy the evil effects of bad Karma.
    Too much fasting brings about extreme weakness.
    s Name, charity and fasting will destroy at once any amount of sin.
    ITS MYSTERIES AND CONTROL METHODS TO CONTROL LUST Just as you control the itching sensation in an eczematous part of the leg or scabies of the hand, you must control the itching from lust by Viveka, Vichara, Brahma-Bhavana, light Sattvic diet, fasting, Pranayama, Uddiyana, Bandha, Satsanga, study of the Gita, Japa, prayer, etc.
    Fasting Fasting weakens the sex Indriya.
    Passionate young men and ladies should take recourse to occasional fasting.
    You will have to impose self-restraint and punishment on yourself by way of fasting for a day whenever Udvega (agitation) manifests in the mind.
    You will have to punish it by fasting for every serious mistake it does.
    No medicine, fasting or other therapeutics could be of any avail.
    One day I was fasting.
    Deep meditation, austerities such as fasting, standing in the ice cold waters of the Ganga during the early hours of the morning all of these he combined with his daily round of service to the sick and needy mendicants and Sadhus.
    A fasting of the senses and the mind is very painful to the individual, because of its thereby nearing the danger of self-extinction through non-relation.
    Swamiji frequently undergoes very long fasts, for fasting is the only thing that seems to relieve his liver condition.
    But even while fasting, he goes on with his programmes.
    (Once in the West, after a very long talk during one of his fasting periods, Swamiji fainted and fell; but very quickly gathering himself together, he got up drank a little water, excused himself for the interruption and went on with his talk.
    Oh king, My Bhakta Tirunavukkarasar is fasting, to have My Darshan.
    The thief is caught and punished severely by fasting, saltless diet, etc.
    He fastens the mind on to this image.
    Austerities like occasional fasting and observance of silence increase the power of endurance.
    A Yogi should always avoid fear, anger, laziness, too much sleep or waking and too much food and fasting.
    In prayer and fasting, in praise and meditation, In Japa and Asana, in Tratak and concentration, only God I saw.
    Selfish work retards spiritual progress and fastens one more chain to your feet.
    If you observe fasting during Ekadasi days to propitiate Lord Hari, and if your mind constantly thinks of various kinds of delicious food, you will not get the benefits of fasting.
    In doing Prayaschitta the offender actually suffers, he punishes himself by long fasting and other ordeals as described above.
    Complete fasting on Ekadasi and Pradosha days destroys many sins.
    Therefore, fasting is a universal Tapas.
    ...
    Avail yourself of the healing properties of the sun, the water, the air, the earth, fasting, herbal plants and so on.
    The first and foremost aid is fasting.
    Sivananda Daily Readings 227 18 JULY - FASTING OF THE HEART Form the habit of deep introspection.
    ...
    A person who has nothing to eat, utterly poverty-stricken, is more worried than a person who fasts deliberately for one month continuously, because fasting has a promise given from within that after one month you will have a good meal.
    People favour underdogs but follow only top dogs.
    Fight for some underdogs anyway.
    
    D:\INTELC~1>
    I was hoping and still hope another similar tool(using LZ[SS|HAM]) to dominate with superfast decompression until advent of CPUs with dozen[s] cores.

    GRAFFITH's usefulness lies in its double-fast(a pun: fast as quick and fast as tight) way of delivering hits for user given patterns. I believe that many people need a quick sidekick(assistant) for English words/phrases usage, i.e. the examples being the weak point of all except OED dictionaries. I consider to make my 26GB English text corpus downloadable but in the future.
    The source code, EXE and beautiful LOGO are here: GRAFFITH_r2.zip.

    Enjoy!

    2010 Sep 04,
    Kaze
    Last edited by Sanmayce; 4th September 2010 at 21:41. Reason: Updated link with revision 2

  6. #66
    Member Sanmayce's Avatar
    Join Date
    Apr 2010
    Location
    Sofia
    Posts
    57
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Shakespeare is wrong: There is a hopeful [decompressor] in Denmark

    First, Kazuya revision 18 is totally simplified and identical(regarding usage) with GRAFFITH revision 2.
    Sadly Kazuya(Kazuya_r18.zip) still is a single-thread console 32bit(also 64bit) tool, nevertheless it is aimed at extremely fast decompression while the size of compressed texts is far-far(100+%) from that of GRAFFITH.
    Also I wanted to test Intel C Compiler 11.1(2010) vs Microsoft C Compiler 13.10.3077(2002), the short bottomline: a disappointment, grmbl.

    At last Kazuya 18/GRAFFITH 2/qpress 1.0 are compared side-by-side regarding Compressed Size/Compression speed/Decompression speed on Toshiba Pentium Merom 2166MHz 4GB DDR2 under Windows 32bit XP.
    Some speed/size comparisons on OSHO.TXT follow(as a note: all tests are from cache):

    No code has to be inserted here.
    The table above was filled with data from following log:
    Code:
    D:\INTELC~1>dir
    
    09/04/2010  11:54 AM           766,464 GRAFFITH.exe
    09/08/2010  03:43 AM            26,996 Kazuya.c
    09/04/2010  10:05 AM               164 Kazuya.ini
    09/08/2010  04:05 AM                18 Kazuya.lst
    09/08/2010  04:29 AM                50 Kazuya_COMPILE_Intel.bat
    09/08/2010  03:43 AM                41 Kazuya_COMPILE_Microsoft.bat
    09/08/2010  04:12 AM           551,571 Kazuya_logo.pdf
    09/08/2010  03:43 AM           479,232 Kazuya_r18_32bit_Intel.exe
    09/08/2010  03:43 AM            49,152 Kazuya_r18_32bit_Microsoft.exe
    09/01/2010  02:50 AM       206,908,949 OSHO.TXT
    09/08/2010  03:50 AM        78,630,023 OSHO.TXT.QuickLZ
    09/08/2010  04:33 AM        39,775,289 OSHO.TXT._b1m3f_bsc
    09/08/2010  04:34 AM        37,855,544 OSHO.TXT._b2m3f_bsc
    09/08/2010  04:34 AM        36,242,679 OSHO.TXT._b4m3f_bsc
    09/08/2010  04:35 AM        34,868,223 OSHO.TXT._b8m3f_bsc
    09/08/2010  04:33 AM        34,188,775 OSHO.TXT._b12m3f_bsc
    09/08/2010  04:36 AM        32,718,277 OSHO.TXT._b32m3f_bsc
    09/08/2010  04:37 AM        31,333,215 OSHO.TXT._b96m3f_bsc
    09/06/2010  09:29 PM           172,032 qpress.exe
    09/08/2010  03:43 AM            20,682 quicklz.c
    09/08/2010  03:43 AM             3,061 quicklz.h
    09/02/2010  07:42 AM             4,096 Timer.exe
    
    D:\INTELC~1>timer Kazuya_r18_32bit_Intel.exe E OSHO.TXT dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    QuickLZ: compressed 206908949 bytes into 78630023 bytes.
    
    Kernel Time  =     0.359 =    3%
    User Time    =    10.562 =   96%
    Process Time =    10.921 =   99%
    Global Time  =    10.924 =  100%
    
    D:\INTELC~1>timer Kazuya_r18_32bit_Microsoft.exe E OSHO.TXT dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    QuickLZ: compressed 206908949 bytes into 78630023 bytes.
    
    Kernel Time  =     0.296 =    2%
    User Time    =    11.265 =   97%
    Process Time =    11.562 =   99%
    Global Time  =    11.571 =  100%
    
    D:\INTELC~1>timer Kazuya_r18_32bit_Intel.exe D OSHO.TXT.QuickLZ dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    QuickLZ: decompressed 78630023 bytes back into 206908949 bytes.
    
    Kernel Time  =     0.171 =   18%
    User Time    =     0.765 =   83%
    Process Time =     0.937 =  102%
    Global Time  =     0.913 =  100%
    
    D:\INTELC~1>timer Kazuya_r18_32bit_Microsoft.exe D OSHO.TXT.QuickLZ dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    QuickLZ: decompressed 78630023 bytes back into 206908949 bytes.
    
    Kernel Time  =     0.187 =   23%
    User Time    =     0.625 =   77%
    Process Time =     0.812 =  100%
    Global Time  =     0.807 =  100%
    
    D:\INTELC~1>Kazuya_r18_32bit_Microsoft.exe
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    Usage: Kazuya <e|E|d|D|_> inputfile outputfile
    
    Options:
       E encodes without writing i.e. test-encode
       D decodes without writing i.e. test-decode
       _ decodes without writing plus searching, MaxSizeOfDecodedBuffer = 384MB
    
    Note1: Kazuya,ini: each line represents a pattern
           Kazuya,lst: each line represents a QuickLZ file
           Kazuya,log: each line is a Blunderbuss(wildcard function) hit
    Note2: If pattern contains at least one wildcard then Blunderbuss is evoked for
           each line in the file, otherwise Railgun is evoked for the entire file.
    Note3: Five wildcards are available:
           wildcard '*' any character(s) or empty,
           wildcard '@' any character or empty,
           wildcard '#' any character and not empty,
           wildcard '$' any ALPHA character and not empty,
           wildcard '%' any NON-ALPHA character and not empty.
    Note4: Due to different line endings(CRLF in Windows; LF in UNIX)
           you must add a '@' wildcard in place of CR:
           for example in case of searching for '*.pdf' write '*.pdf@'.
    Note5: A pseudo bug exists uncrushed - End-Of-File must be LF character.
    
    Example1: Kazuya e Caterpillar.47.RAFT6.txt Caterpillar.47.RAFT6.txt.QuickLZ
    Example2: Kazuya d Caterpillar.47.RAFT6.txt.QuickLZ Caterpillar.47.RAFT6.txt
    Example3: Kazuya _
    
    D:\INTELC~1>type Kazuya.ini
    an
    *to?@
    TDK
    the
    *%fast$$$%*
    easy
    grmbl
    email
    pasting
    amazing
    *underdog*
    superdog
    participants
    skillessness
    I should have known
    human consciousness
    
    D:\INTELC~1>type Kazuya.lst
    OSHO.TXT.QuickLZ
    
    D:\INTELC~1>timer Kazuya_r18_32bit_Microsoft.exe _
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    Size of Kazuya.lst: 18
    Size of Kazuya.ini: 164
    Allocating memory 768 MB ... OK
    Decompressing 'OSHO.TXT.QuickLZ' ...
    Entire-file-searching with Railgun for 'an' ...
    Railgun_totalhits: 1987797
    Single-line-searching with Blunderbuss for '*to?@' ...
    Blunderbuss_totalhits: 46
    Entire-file-searching with Railgun for 'TDK' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'the' ...
    Railgun_totalhits: 2114180
    Single-line-searching with Blunderbuss for '*%fast$$$%*' ...
    Blunderbuss_totalhits: 950
    Entire-file-searching with Railgun for 'easy' ...
    Railgun_totalhits: 5191
    Entire-file-searching with Railgun for 'grmbl' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'email' ...
    Railgun_totalhits: 1
    Entire-file-searching with Railgun for 'pasting' ...
    Railgun_totalhits: 2
    Entire-file-searching with Railgun for 'amazing' ...
    Railgun_totalhits: 323
    Single-line-searching with Blunderbuss for '*underdog*' ...
    Blunderbuss_totalhits: 4
    Entire-file-searching with Railgun for 'superdog' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'participants' ...
    Railgun_totalhits: 147
    Entire-file-searching with Railgun for 'skillessness' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'I should have known' ...
    Railgun_totalhits: 1
    Entire-file-searching with Railgun for 'human consciousness' ...
    Railgun_totalhits: 519
    
    Kazuya: Total Blunderbuss(wildcard) hits: 1000
    Kazuya: Done.
    
    Kernel Time  =     0.187 =    1%
    User Time    =    18.359 =   98%
    Process Time =    18.546 =   99%
    Global Time  =    18.668 =  100%
    
    D:\INTELC~1>timer Kazuya_r18_32bit_Intel.exe _
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Kazuya, Text decompressor-finder-dumper, revision 18, written by Kaze,
    powered by Lasse Reinhold's excellent QuickLZ 1.4.1 library.
    
    Size of Kazuya.lst: 18
    Size of Kazuya.ini: 164
    Allocating memory 768 MB ... OK
    Decompressing 'OSHO.TXT.QuickLZ' ...
    Entire-file-searching with Railgun for 'an' ...
    Railgun_totalhits: 1987797
    Single-line-searching with Blunderbuss for '*to?@' ...
    Blunderbuss_totalhits: 46
    Entire-file-searching with Railgun for 'TDK' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'the' ...
    Railgun_totalhits: 2114180
    Single-line-searching with Blunderbuss for '*%fast$$$%*' ...
    Blunderbuss_totalhits: 950
    Entire-file-searching with Railgun for 'easy' ...
    Railgun_totalhits: 5191
    Entire-file-searching with Railgun for 'grmbl' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'email' ...
    Railgun_totalhits: 1
    Entire-file-searching with Railgun for 'pasting' ...
    Railgun_totalhits: 2
    Entire-file-searching with Railgun for 'amazing' ...
    Railgun_totalhits: 323
    Single-line-searching with Blunderbuss for '*underdog*' ...
    Blunderbuss_totalhits: 4
    Entire-file-searching with Railgun for 'superdog' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'participants' ...
    Railgun_totalhits: 147
    Entire-file-searching with Railgun for 'skillessness' ...
    Railgun_totalhits: 0
    Entire-file-searching with Railgun for 'I should have known' ...
    Railgun_totalhits: 1
    Entire-file-searching with Railgun for 'human consciousness' ...
    Railgun_totalhits: 519
    
    Kazuya: Total Blunderbuss(wildcard) hits: 1000
    Kazuya: Done.
    
    Kernel Time  =     0.203 =    1%
    User Time    =    18.125 =   98%
    Process Time =    18.328 =   99%
    Global Time  =    18.343 =  100%
    
    D:\INTELC~1>GRAFFITH.exe
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    Usage: GRAFFITH <e|E|d|D|_> inputfile outputfile <switches>
    
    Options:
       E encodes without writing i.e. test-encode
       D decodes without writing i.e. test-decode
       _ decodes without writing plus searching, MaxSizeOfDecodedBuffer = 384MB
    Switches:
      -b<size> Block size in megabytes, default: -b12
                 minimum: -b1, maximum: -b1024
      -m<algo> Block sorting algorithm, default: -m3
                 -m0 Sort Transform of order 3
                 -m1 Sort Transform of order 4
                 -m2 Sort Transform of order 5
                 -m3 Burrows Wheeler Transform
      -c<ctx>  Contexts for sorting, default: -cf
                 -cf Following contexts
                 -cp Preceding contexts
                 -ca Autodetect (experimental)
      -H<size> LZP hash table size in bits, default: -H16
                 minimum: -H10, maximum: -H28
      -M<size> LZP minimum match length, default: -M128
                 minimum: -M4, maximum: -M255
      -f       Enable fast compression mode, default: disable
      -l       Enable LZP, default: enable
      -r       Enable Reordering, default: disable
      -s       Enable Segmentation, default: disable
      -p       Disable all preprocessing techniques
      -t       Disable parallel blocks processing, default: enable
      -T       Disable multi-core systems support, default: enable
    
    Switches may be combined into one, like -b128p
    
    Note1: GRAFFITH,ini: each line represents a pattern
           GRAFFITH,lst: each line represents a BSC file
           GRAFFITH,log: each line is a Blunderbuss(wildcard function) hit
    Note2: If pattern contains at least one wildcard then Blunderbuss is evoked for
           each line in the file, otherwise Railgun is evoked for the entire file.
    Note3: Five wildcards are available:
           wildcard '*' any character(s) or empty,
           wildcard '@' any character or empty,
           wildcard '#' any character and not empty,
           wildcard '$' any ALPHA character and not empty,
           wildcard '%' any NON-ALPHA character and not empty.
    Note4: Due to different line endings(CRLF in Windows; LF in UNIX)
           you must add a '@' wildcard in place of CR:
           for example in case of searching for '*.pdf' write '*.pdf@'.
    Note5: A pseudo bug exists uncrushed - End-Of-File must be LF character.
    
    Example1: GRAFFITH e Caterpillar.47.RAFT6.txt Caterpillar.47.RAFT6.txt.bsc -m3f
    Example2: GRAFFITH d Caterpillar.47.RAFT6.txt.bsc Caterpillar.47.RAFT6.txt
    Example3: GRAFFITH _
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b1m3f_bsc -b1 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 39775289 in 22.125 seconds.
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b2m3f_bsc -b2 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 37855544 in 23.641 seconds.
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b4m3f_bsc -b4 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 36242679 in 25.735 seconds.
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b8m3f_bsc -b8 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 34868223 in 27.938 seconds.
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b12m3f_bsc -b12 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 34188775 in 31.016 seconds.
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b32m3f_bsc -b32 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 32718277 in 31.375 seconds.
    
    D:\INTELC~1>GRAFFITH.exe e OSHO.TXT OSHO.TXT._b96m3f_bsc -b96 -m3f
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT compressed 206908949 into 31333215 in 37.469 seconds.
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b1m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b1m3f_bsc decompressed 39775289 in 15.078 seconds.
    
    Kernel Time  =     0.796 =    5%
    User Time    =    29.093 =  192%
    Process Time =    29.890 =  198%
    Global Time  =    15.092 =  100%
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b2m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b2m3f_bsc decompressed 37855544 in 15.406 seconds.
    
    Kernel Time  =     0.750 =    4%
    User Time    =    29.859 =  193%
    Process Time =    30.609 =  198%
    Global Time  =    15.429 =  100%
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b4m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b4m3f_bsc decompressed 36242679 in 16.047 seconds.
    
    Kernel Time  =     0.625 =    3%
    User Time    =    30.562 =  190%
    Process Time =    31.187 =  194%
    Global Time  =    16.071 =  100%
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b8m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b8m3f_bsc decompressed 34868223 in 16.687 seconds.
    
    Kernel Time  =     0.484 =    2%
    User Time    =    31.656 =  189%
    Process Time =    32.140 =  192%
    Global Time  =    16.719 =  100%
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b12m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b12m3f_bsc decompressed 34188775 in 17.266 seconds.
    
    Kernel Time  =     0.640 =    3%
    User Time    =    32.468 =  187%
    Process Time =    33.109 =  191%
    Global Time  =    17.288 =  100%
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b32m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b32m3f_bsc decompressed 32718277 in 19.390 seconds.
    
    Kernel Time  =     0.609 =    3%
    User Time    =    36.703 =  189%
    Process Time =    37.312 =  192%
    Global Time  =    19.418 =  100%
    
    D:\INTELC~1>timer GRAFFITH.exe D OSHO.TXT._b96m3f_bsc dummy
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Graffith(graphite), Text decompressor-finder-dumper, rev. 02, written by Kaze.
    
    This is bsc, Block Sorting Compressor. Version 2.3.0. 9 August 2010.
    Copyright (c) 2009-2010 Ilya Grebnov <Ilya.Grebnov@libbsc.com>.
    
    OSHO.TXT._b96m3f_bsc decompressed 31333215 in 23.594 seconds.
    
    Kernel Time  =     0.484 =    2%
    User Time    =    45.656 =  193%
    Process Time =    46.140 =  195%
    Global Time  =    23.628 =  100%
    
    D:\INTELC~1>qpress.exe
    qpress 1.0 - Copyright 2006-2010 Lasse Reinhold - www.quicklz.com
    Using QuickLZ 1.4.1 compression library
    Compiled for: [Windows] *nix    [x86/x64] RISC    [32-bit] 64-bit
    
    Compression:
        qpress [-rovfCBPLKT] <source file/dir search pattern> <destination file>
        qpress -i[ovfBPLKT] <filename to give stdin data> <destination file>
    
    Decompression:
        qpress -d[ovfBPTn] <source file> <destination directory>
    
    Benchmark and recovery:
        qpress -m[LT] <source file>
        qpress -R <corrupted compressed file> <destination directory>
    
    Flags:
        -d   Decompress
        -Ln  Set compression level to n where n = 1, 2 or 3 (default = 1)
        -r   Include sub directories during compression
        -v   Show progress information during compression and decompression
        -i   Read from stdin (omit source file or file/dir search pattern)
        -o   Write to stdout (omit destination file or directory)
        -f   Overwrite existing files during compression and decompression (default
             is to abort)
        -C   Continue if a source file cannot be opened during compression (default
             is to abort)
        -Tn  Use n threads/cores where n = 1 to 256 (default = 2). Be aware of
             memory usage with large n
        -Kn  Read from disk in n KiB chunks during compression where n = 64 to
             32768 (default = 64). Be aware of memory usage with large n
        -B   Windows only: Disable file system caching (FILE_FLAG_NO_BUFFERING) to
             prevent cache of other applications from being be flushed. Keep
             enabled if files are small and need further processing
        -Pn  Windows only: Set CPU and disk I/O priority to n where 1 = BACKGORUND
             (Vista, 7, 2008 only), 2 = IDLE, 3 = NORMAL or 4 = ABOVE (default = 3)
    
    Examples of compression:
        qpress -rv d:\dir\* database.qp
        qpress -vfK4096T2 ../dir/*.xml database.qp 2> log.txt
        qpress -ovL3K *.xml > database.qp
        type database.xml | qpress -io database.xml > database.qp
        type database.xml | qpress -i database.xml database.qp
    
    Examples of decompression:
        qpress -d database.qp d:\dir
        qpress -do database.qp > database.xml
        type database.qp | qpress -di .
    
    Notes:
    When compressing on *nix with -r flag, file/dir search pattern only filters in
    top level directory (directories matching in top level will be included fully).
    
    If a compressed file contains multiple files and is decompressed to stdout, all
    files will be concatenated in a continuous stream.
    
    It's recommended to use .qp as filename suffix.
    
    D:\INTELC~1>timer qpress.exe -mL1 OSHO.TXT
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Using 2 threads/cores (change with -T flag). Please wait...
    Compressed 206,908,949 bytes into 92,211,065 (44.6%) at 321.3 MiB/s
    Decompressed at 327.0 MiB/s
    
    Kernel Time  =     0.296 =    1%
    User Time    =    38.546 =  191%
    Process Time =    38.843 =  192%
    Global Time  =    20.181 =  100%
    
    D:\INTELC~1>timer qpress.exe -mL3 OSHO.TXT
    Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31
    Using 2 threads/cores (change with -T flag). Please wait...
    Compressed 206,908,949 bytes into 78,630,988 (38.0%) at 29.2 MiB/s
    Decompressed at 593.9 MiB/s
    
    Kernel Time  =     0.453 =    1%
    User Time    =    59.531 =  193%
    Process Time =    59.984 =  195%
    Global Time  =    30.726 =  100%
    
    D:\INTELC~1>
    Heart-touching 1556.4MiB/s, a dream [about to] come true, this almost doubles the uploading SSD(200MB/s) performance for texts:
    here in order to traverse OSHO.TXT(197MB) it takes 0.985s, when running qpress: OSHO.TXT.QuickLZ(75MB) it takes 75/200 + 197/1556 = 0.375+0.126 = 0.501s or ((0.985-0.501)/0.501)*100% = 96.6% boosting.
    The testbed is from POST #64: CPU QuadCore Intel 'Yorkfield' Core 2 Quad Q9550, 2833 MHz.

    More than impressive, at last my greedy eyes were pleased with a dominantly fast number: OSHO decompressed at 593.9/1556.4 MiB/s for Merom/Yorkfield respectively.
    Viva Lasse.

  7. #67
    The Founder encode's Avatar
    Join Date
    May 2006
    Location
    Moscow, Russia
    Posts
    3,984
    Thanks
    377
    Thanked 352 Times in 140 Posts
    Well, my new LZ77 compresses OSHO.TXT to 56,123,927 bytes. Decompression takes 0.5 sec...

Page 3 of 3 FirstFirst 123

Similar Threads

  1. Fastest Compressors
    By LovePimple in forum Forum Archive
    Replies: 0
    Last Post: 1st November 2006, 06:36

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •