• Martes 12 de Noviembre de 2024, 21:05

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - chapapott

Páginas: [1]
1
C/C++ / Lectura De Cadenas Eficiente En C O C++
« en: Viernes 21 de Abril de 2006, 18:15 »
Hola, estoy implementando un algoritmo sobre grafos de talla muy grande, alrededor de varios millones de aristas (p. ej. 5*10^6). Un grafo viene representado en un fichero de texto donde las aristas se representan en la forma:

"cadena_origen"|"cadena_destino"|entero

siendo "cadena_origen" y "cadena_destino" el nombre de los nodos inicial y final de la arista (dichos nombres pueden contener caracteres, espacios y numeros). entero es el peso de la arista. Actualmente leo estas aristas de la siguiente manera:

Código: Text
  1.  
  2.  
  3.  while (fd.getline(cad, TAM)) {
  4.  istringstream fichlin(cad);
  5.  fichlin.getline(node1, TAM, '|');
  6.  fichlin.getline(node2, TAM, '|');
  7.  fichlin >> Peso;
  8.  //procesar node1, node2 y Peso...
  9.  }
  10.  
  11.  
  12.  

El problema es que tarda demasiado, alrededor de 30 s. en mi máquina, la ejecución de este bucle, con lo cual la entrada misma de los datos del problema supone más tiempo que la aplicación del algoritmo posterior.

Me gustaría saber si hay alguna forma más eficiente de hacer esta misma operación de lectura de cadenas, ya sea en C o en C++ y aunque conlleve una pérdida de claridad, con la que poder reducir el tiempo de ejecución del programa.

Muchísimas gracias a todos de antemano!

Un saludo
----------------------------------------------------

Páginas: [1]