Please provide a real test case!
Randomly chosen base64 strings will almost never overlap. And comparing the efficiency of different solutions is not possible with the fuzzy specs given.
So efficiency will also depend on the nature of the real data.
My suggestions:
- for 2 same length substrings $a (tail $A) and $b (head $B) you'll get the number of missmatches $m by counting the none null bytes in ($a ^ $b)
- those mismatches have to be <= your allowed threshold $X
- (see my remarks on no feature 'bitwise' the docs don't seem to be up to date anymore°)
But you don't need to try all possible length, because only a small number of positions are likely:
- for $X=0 you only need to check those tails in $A which start with the first character $b0 in $B
- for $X=1 you also need to check those positions which start with the second character $b1 in $B (assuming $b0 was a mismatch)
- and so on for bigger $X
This should be far more efficient than your code.
updates
°) euphemism for buggy
edit
added
none
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.