This document compares the Knuth-Morris-Pratt (KMP) and Boyer-Moore (BM) string matching algorithms. KMP runs in linear time but requires preprocessing, while BM can run sub-linearly by skipping characters but has a higher preprocessing cost. Performance tests show KMP works best for short strings/patterns, while BM works best for long strings/patterns. Both algorithms find applications in areas like web search, spam filtering, and natural language processing.