Я те ссылки краем глаза глянул, но вроде там были еще какие-то таблицы векторов. (пропустил твой последний код - действительно

)
Да и думал, что для курсовой главное какойто творческий (описательный) процесс (уже подзабываю учебу

).
в реале (по моим рассуждениям проблеммой основательно не занимался)
- либо ассемблерная вставка (даже не либо а как дополнение для быстродействия)
- либо идти на разработку однопроходной (всмысле без вложенного цикла) схеме тоесть попытаться в основном цыкле проверять 2, 3.... байты и одновременно искать следующие вхождения (типа ротора получится)( в место индекса в искомом цикле попытаться массив индексов)
- еще можно попробовать разделить массив где ищут на несколько частей
(
Код:
d := length/3 {или побольше} ; pos1 := 0; pos2 := d; pos3 := 2*d;
// а в цикле одновременно
if P[pos1] = S[i]
if P[pos2] = S[i]
...
)
К сожалению немогу гарантировать что будет быстрее и у самого со временнем напряженка чтоб основательно повозится.
Надеюсь что чтонибудь пригодится.
Удачи