Текущий архив: 2003.01.27;
Скачать: CL | DM;
Вниз
Поиск в файле Найти похожие ветки
← →
SinnerPro (2003-01-19 09:52) [0]Вот. В общем дан файл, размером ~2,5-3 Mb. Надо, из него вытянуть количество последовательностей из 3х определенных букв. Файл содержит абсолютно все символы. Расстояние между последовательностями разное, в среднем от 5000 до 45000 символов. Желательно чтобы это происходило достаточно быстро, медленно я сам сделать могу ;).
← →
Song © (2003-01-19 10:39) [1]BlockRead+цикл будет вполне быстро
или через наследнные классы от TStream, если только чтение нужно.
← →
Романов Р.В. © (2003-01-19 10:47) [2]Читай файл в буфер целиком или кусками. Ищи последовательность в цикле.
← →
SinnerPro (2003-01-19 11:07) [3]Song: Романов Р.В:
Да я пробывал, все равно тормазно как-то... ну если никак подругому нельзя, то ладно
← →
Романов Р.В. © (2003-01-19 11:54) [4]Можно несколько ускорить процесс поиска если проверять не все байты, а через 3. Для этого нужно получить маску.
b: Byte;
...
b :=(Ord("A") or Ord("G") or Ord("T")) xor $FF;
Сравниваешь каждый третий байт с этой маской
if (CurentByte and b) = 0 then
// Более точная проверка в окрестностях этого байта.
При некоторых условиях способ может оказаться медленнее прямого перебора.
Страницы: 1 вся ветка
Текущий архив: 2003.01.27;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c