Agilizar número pra string

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Agilizar número pra string

Mensagem por JoséQuintas »

Minha rotina de backup do MySQL está lenta, e parece que a causa disso é a conversão.
Números de origem fora do Harbour são tratados diferentes de números internos do Harbour.
Uso:

- ValType() pra testar o tipo de conversão
- No caso de números, se resultar em 1.00000, vou removendo os zeros, e o ponto
- E vou acumulando numa string até 500KB, antes de gravar no disco.

Já removi o Len() que fazia no texto de até 500kb, substituindo pelo Len() dos trechos individuais
Imagino que texto menor calcula mais rápido...

É algo do tipo:

Código: Selecionar todos

FOR nCont = 1 TO FCount()
   xValue := FGet( nCont )
   DO CASE
   CASE ValType( xValue ) == "N"; xValue := NumberSql( xValue )
   CASE ValType( xValue ) == "D"; xValue := DateSql( xValue )
   OTHERWISE                          ; xValue := StringSql( xValue )
   ENDCASE
  cTexto += xValue
NEXT
Alguma idéia pra agilizar isso?
Agora durante post.... talvez cType := ValType( xValue ) uma única vez agilize alguma coisa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

Agilizar número pra string

Mensagem por Marcos Kieron »

hb_valtostr()?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Agilizar número pra string

Mensagem por JoséQuintas »

Melhor esquecer, não vai ter opção melhor.

Na verdade trata-se do conjunto.
o conteúdo pode ser NULL pra qualquer um deles, e além disso:

Data: '2020-01-01'
Número: 1, 1.52, 1.5, 1.57892
String: 'dd\'dd'

1.000000000000000
Não compensa isso no backup, então minha rotina transforma em 1, apenas um caractere.

O Harbour trata números de forma diferente, conforme vém de DBF ou MySQL/OLE.
E tem o SET DECIMALS, que pode interferir no resultado.

São essas coisas que deixam mais demorado.

Deixar como está, e se as bases crescerem muito, deixo de fazer pelo Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

Agilizar número pra string

Mensagem por Marcos Kieron »

Usar as ferramentas nativas do MySQL não servem no seu caso?
Responder