Olá!
Há algum tempo li um tópico sobre o assunto, neste fórum. Creio que foi postado pelo Itamar. Gostaria de testar isso, ver se melhora a performance. Só não consegui achar o referido tópico. Alguem conhece o assunto?
Grato
Criar DBF temporário em memória
Moderador: Moderadores
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Criar DBF temporário em memória
Buenas,
Melhora e muito a performance.
Não sei o que você está usando, mas para xHarbour 1.2.1 você tem que linkar a LIB (filemem.lib) e abaixo segue um pequeno exemplo da contrib:
Para Harbour 2.0 tens que linkar a lib (hbmemio.lib) e abaixo segue um pequeno exemplo da contrib:
Melhora e muito a performance.
Não sei o que você está usando, mas para xHarbour 1.2.1 você tem que linkar a LIB (filemem.lib) e abaixo segue um pequeno exemplo da contrib:
Código: Selecionar todos
/*
* $Id: test.prg,v 1.1 2009/10/05 14:41:55 marchuet Exp $
*/
REQUEST HB_MEMIO
PROC Main()
LOCAL nI
FIELD F1
DBCREATE("mem:test", {{"F1", "N", 9, 0}},, .T., "memarea")
FOR nI := 1 TO 1000
DBAPPEND(); F1 := HB_RANDOM() * 1000000
NEXT
INDEX ON F1 TAG f1
DBEVAL({|| QOUT(F1)})
DBCLOSEAREA()
DBDROP("mem:test") // Free memory resource
RETURN
Código: Selecionar todos
/*
* $Id: test.prg 12600 2009-09-22 12:57:36Z vszakats $
*/
REQUEST HB_MEMIO
PROC Main()
LOCAL nI
FIELD F1
DBCREATE("mem:test", {{"F1", "N", 9, 0}},, .T., "memarea")
FOR nI := 1 TO 1000
DBAPPEND(); F1 := HB_RANDOM() * 1000000
NEXT
INDEX ON F1 TAG f1
DBEVAL({|| QOUT(F1)})
DBCLOSEAREA()
DBDROP("mem:test") // Free memory resource
RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Criar DBF temporário em memória
E não deixe de olhar o LetdoDB também que é um ótimo projeto que agiliza muito o uso de DBF em rede e remoto:
http://sourceforge.net/projects/letodb/
http://sourceforge.net/projects/letodb/
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Criar DBF temporário em memória
Olá!
Leonardo:
Obrigado pela resposta. Foi isso mesmo que eu havia visto.
No que se refere a xBase, eu tinha parado no Clipper 5.2e. Por uma dessas reviravoltas que a vida dá, após passar por outras ferramentas, acabei sendo alocado em um projeto que usa xHarbour. Como não conheço o assunto, encontrei na pesquisa do fórum um pacote demo que você postou, onde tem o xHarbour e a HwGui. É o que instalei na minha máquina:
No cliente, ainda não olhei qual é a versão mas, sei que é a comercial. Nesta primeira semana, já vi que terei que fazer algumas otimizações de performance (tem processos na empresa que demoram 14 horas para rodar). Por isso estou procurando aprender essas rotinas que diminuem I/O.
Voltando aos exemplos que você postou, não consegui gerar os executáveis. Faltam as duas libs que você mencionou.
Meu Set Lib:
Alguma dica?
Obrigado mais uma vez.
Leonardo:
Obrigado pela resposta. Foi isso mesmo que eu havia visto.
No que se refere a xBase, eu tinha parado no Clipper 5.2e. Por uma dessas reviravoltas que a vida dá, após passar por outras ferramentas, acabei sendo alocado em um projeto que usa xHarbour. Como não conheço o assunto, encontrei na pesquisa do fórum um pacote demo que você postou, onde tem o xHarbour e a HwGui. É o que instalei na minha máquina:
Código: Selecionar todos
HbMake v1.20 - xHarbour Make Utility
Copyright (C) 2000-2007 xHarbour project - http://www.xharbour.org
xHarbour build 1.0.0 Intl. (SimpLex) / Borland C++ 5.5.1Voltando aos exemplos que você postou, não consegui gerar os executáveis. Faltam as duas libs que você mencionou.
Código: Selecionar todos
c:\BCC55\BIN\ilink32 @makefile.lnk
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_HB_MEMIO' referenced from C:\LIXO\OBJ\DBMEM1.OBJProvavelmente a versão está desatualizada. E o pior é que não sei como atualizar.C:\lixo>set lib
LIB=c:\Bcc55\lib;c:\xHarbour\lib;c:\hwgui\lib
C:\lixo>
Alguma dica?
Obrigado mais uma vez.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Criar DBF temporário em memória
Eu faria uso de uma hash table, 100% garantido ser uma tabela em memória
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)