Estou com uma dúvida sobre passar o recordset ADO por funções.
Considerando:
oTemporario := conexão:Execute( "SELECT ...." )
O que seria melhor?
Função( oTemporario )
ou
Função( @oTemporario )
Teoricamente, passando o ponteiro economiza memória, mas..... sinceramente não sei.
Dúvida sobre passar recordset ADO por funções
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Dúvida sobre passar recordset ADO por funções
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/
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/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Dúvida sobre passar recordset ADO por funções
tenho usado bastante quando quero modificar o conteúdo do parâmetro passado, se não for alterar passo sem o @, não sabia que economizava memoriaJoséQuintas escreveu:Estou com uma dúvida sobre passar o recordset ADO por funções.
Considerando:
oTemporario := conexão:Execute( "SELECT ...." )
O que seria melhor?
Função( oTemporario )
ou
Função( @oTemporario )
Teoricamente, passando o ponteiro economiza memória, mas..... sinceramente não sei.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Dúvida sobre passar recordset ADO por funções
Passando por referência está passando o endereço da mesma variável, o chamado pointer/ponteiro.Fernando queiroz escreveu:tenho usado bastante quando quero modificar o conteúdo do parâmetro passado, se não for alterar passo sem o @, não sabia que economizava memoria
Desse jeito a função usa a mesma variável.
SEM referência, é criada uma cópia da variável com o mesmo conteúdo.
É que geralmente trabalhamos com variáveis de conteúdo pequeno, e nem importa muito economizar memória.
Difícil, mas não impossível, poderia ser a geração de um SPED para o governo:
Imagine uma variável de 500MB, passando por uma função: vai ser 500MB da original, 500MB na cópia pra função, e 500MB pro retorno. 1.5GB total.
Por referência, fica nos 500MB.
Dependendo da memória do computador, a rotina poderia não funcionar, ou o Windows ficar sobrecarregado.
Acaba sendo interessante lembrar disso, porque temos todo tipo de situação.
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/
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/