Página 1 de 1
Criar DBF temporário em memória
Enviado: 28 Mai 2010 17:44
por alxsts
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
Re: Criar DBF temporário em memória
Enviado: 28 Mai 2010 19:04
por sygecom
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:
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
Para Harbour 2.0 tens que linkar a lib (hbmemio.lib) e abaixo segue um pequeno exemplo da contrib:
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
Re: Criar DBF temporário em memória
Enviado: 29 Mai 2010 10:59
por sygecom
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/
Re: Criar DBF temporário em memória
Enviado: 29 Mai 2010 20:51
por alxsts
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:
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.1
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.
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.OBJ
Meu Set Lib:
C:\lixo>set lib
LIB=c:\Bcc55\lib;c:\xHarbour\lib;c:\hwgui\lib
C:\lixo>
Provavelmente a versão está desatualizada. E o pior é que não sei como atualizar.
Alguma dica?
Obrigado mais uma vez.
Criar DBF temporário em memória
Enviado: 23 Out 2018 19:59
por asimoes
Eu faria uso de uma hash table, 100% garantido ser uma tabela em memória