Clipper On Line • Ver Tópico - Dúvida sobre passar recordset ADO por funções

Dúvida sobre passar recordset ADO por funções

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

Moderador: Moderadores

 

Dúvida sobre passar recordset ADO por funções

Mensagempor JoséQuintas » 01 Jul 2020 18:25

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Dúvida sobre passar recordset ADO por funções

Mensagempor Fernando queiroz » 02 Jul 2020 23:02

José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.


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
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Dúvida sobre passar recordset ADO por funções

Mensagempor JoséQuintas » 03 Jul 2020 11:53

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


Passando por referência está passando o endereço da mesma variável, o chamado pointer/ponteiro.
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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro