Как создать быстрый график из текстового файла ?
Я хочу сделать график из текстового файла, содержащего 36692 узла, и каждая строка текста содержит исходный и целевой узлы ребра графика. Я использовал библиотеку igraph для создания графика. Я написал следующий код, но он слишком медленный. как я могу прочитать весь текстовый файл в буфер памяти, чтобы сделать алгоритм быстрее?
igraph_empty(&graph, vertexNum, 0); ifstream inputFile("Email-Enron.txt"); int v1, v2; while( ( inputFile >> v1 >> v2 )) { igraph_add_edge(&graph, v1, v2); }
Что я уже пробовал:
этот код работает для небольшого набора данных, но для большого набора данных он занимает много времени.
0x01AA
а) что значит "но это слишком медленно"?
Б) обычно графические библиотеки позволяют вам делать что-то вроде "StartUpdate", "EndUpdate", чтобы избежать проблем с производительностью... Это до вас, чтобы найти это для вас Lib в использовании.
Richard MacCutchan
Это очень медленный способ чтения текстового файла. Вы должны использовать что-то вроде readline, чтобы прочитать каждую строку, маркировать элементы в строке и построить массив точек. Затем передайте все точки в конструктор графиков.
Member 11807654
я тоже использовал следующий код. он читает файл очень быстро, но когда он хочет создать график, он работает медленно:
std:: ifstream in("Email-Enron.txt");
std::буфер stringstream;
буфер < & lt; in.rdbuf();
СТД::строка содержание(буфер.ул.());
for (int i=0;i< contents. size (); i+=4)
{
igraph_add_edge(&усилителя;графика, содержание[я], содержание[я+2]);
}
content. size() больше 3/000/000
Richard MacCutchan
Так что проблема на самом деле связана с библиотекой igraph.