Ver Mensaje Individual
  #9  
Antiguo 20-05-2016
rocksoft rocksoft is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 71
Reputación: 8
rocksoft Va por buen camino
Buenas con todos,

Cita:
Empezado por adebonis Ver Mensaje
Hola.
Las tablas DBIsam tienen la función ImportTable. ¿La has probado?
Adolfo de Bonis.
Si ya lo probe, pero no es una opcion ya que no valida la informacion y a la mas minima salta un error, ya que los datos a importar no son de fiar, de vez en cuando tienen un campo mas, o un delimitador doble etc..

Pero les comento de que 1500 por segundo son muy lentos, me puse a analizar proceso por proceso y midiendo paso por paso los tiempos de resultado, la parte lenta el desgloce del string en sus respectivos campos, usaba un stringlist con delimitador, ahora con un array es bastante mas rapido.

Otros dos puntos que relentizaba el proceso era en contador de registros leidos y la barra de avance (aunque paresca una tontaria cuestan tiempo) en 10.000 registros hacen la diferencia de 1-3 segundos.

Ahora estoy importando unos 14.000 registros por segundo, lo que tardaba importar 10.7 Millones de registros unas 3 horas, ahora tarda unos 15 min.

bueno les dejo el spliter por si alguien le sirve, no soy el autor lo encontre buscando :

Código Delphi [-]
function Split00(const Texto, Delimitador: string): TSarray;
var
  i: integer;
  Len: integer;
  PosStart: integer;
  PosDel: integer;
begin
  i := 0;
  SetLength(result, 1);
  Len := Length(Delimitador);
  PosStart := 1;
  PosDel := Pos(Delimitador, Texto);
  while PosDel > 0 do
  begin
    result[i] := Copy(Texto, PosStart, PosDel - PosStart);
    PosStart := PosDel + Len;
    PosDel := Pos(Delimitador, Texto, PosStart);
    Inc(i);
    SetLength(result, i + 1);
  end;
  result[i] := Copy(Texto, PosStart, Length(Texto));
end;
Responder Con Cita