Re: как быстро файл проверить на правильность символов
От: Boroda Россия  
Дата: 03.04.02 08:00
Оценка:
Здравствуйте pvnic, Вы писали:

P>Здравствуйте!


P>Вот какая проблема — есть файл(порядка 1.5 мега, но это небольшой еще) из него нужно выбрать только те сиволы, которые принадлежат — atgc

P>но изначально, там есть разная дополнительная информация+форматирование+цифры
P>как из всего этого безобразия взять только символы из того алфавита?
P>сейчас код примерно такой:

P>
P>    // second step  - load
P>    do
P>    {
P>        getline( is, data );
P>        const char* lpData = data.c_str();
P>        if (data.size()>1 && lpData[0] == '/' && lpData[1] == '/' )
P>            break;
P>        else
P>        {
P>            int len = data.length();
P>            for(int i=0; i<len; i++)   
P>            {
P>                switch(data[i])
P>                {
P>                    case 'a':
P>                        m_iCountA++;
P>                        clearedData+='a';
P>                        break;
P>                    case 'A':
P>                        m_iCountA++;
P>                        clearedData+='a';
P>                        break;
P>                    case 'c':
P>                        m_iCountC++;
P>                        clearedData+='c';
P>                        break;
P>                    case 'C':
P>                        m_iCountC++;
P>                        clearedData+='c';
P>                        break;
P>                    case 'g':
P>                        m_iCountG++;
P>                        clearedData+='g';
P>                        break;
P>                    case 'G':
P>                        m_iCountG++;
P>                        clearedData+='g';
P>                        break;
P>                    case 't':
P>                        m_iCountT++;
P>                        clearedData+='t';
P>                        break;
P>                    case 'T':
P>                        m_iCountT++;
P>                        clearedData+='t';
P>                        break;
P>                    default: 
P>                         break;
P>                }
P>            }
P>            body += clearedData;
P>        }

P>

P>но заметно тормозит.....


Первое что пришло в голову ...

разбить файл на нескоько равных частей.
Запустить столько же threads.
В каждой нитке считать m_iCountXXX.
После завершения всё складываем.

Скорость будет зависеть из отношений длина файла и кол-во threads.
Dimok
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.