1
저는 벡터 (m_docs가 가리키는 특정 유형)의 문서를 반복하는 프로그램을 작성하고 있습니다. 각 문서에는 ~ 17000 개의 0의 벡터가있는 속성이 있으며,이 경우 루프의 포인트가 변경됩니다. 3200 개의 문서가 있습니다. 내 문제는 처음 100 개의 문서가 다소 빨리 처리되고 실제로 느려지는 것입니다. 나는 속도가 느려 이유를 이해하고자, 나는 그것을 해결 (또는 적어도 그것을 최적화) 해당 코드의For 루프가 느려집니다.
부분 수있는 방법을 알고 :
for (int k = 0; k < m_docs->size(); k++) {
int pos;
std::map<std::string, std::vector<std::pair<int, int> > >::iterator it = m_index.begin();
std::map<string,int> cleanList = (*m_docs)[k].getCleantList();
for (auto const& p : cleanList) {
pos = distance(it, m_index.find(p.first));
float weight = computeIdf(p.first) * computeTf(p.first, (*m_docs)[k]);
(*m_docs)[k].setCoord(pos, weight);
}
}
합니다 (
m_index
에 대한 최소한의) 데이터 구조가 실행중인 필요할 수 있습니다 최적화 된 빌드 또는 "디버그", 최적화되지 않은 빌드? – PaulMcKenzie메인 메모리가 부족한 것처럼 들리 겠지만 이제는 디스크로 /부터 메모리를 페이징하고 있습니다. – AndyG
'it' 정의는'auto'에 대한 교과서 유스 케이스와 같습니다 ... – Blindy