Здравствуйте 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.