FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Reempplazo para el lento TClientDataSet
Quisiera saber que me recomiendan ustedes para reemplazar al lento TClientDataSet y que sea libre/gratis
He visto el KmMemtable pero me parece que no es gratis porque en su sitio no dice nada. Me pueden dejar varias alternativas y evaluare cual me conviene o me gusta mas para trabajar. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#2
|
||||
|
||||
kbmemtable es (o al menos, era) libre.
De todas formas, no entiendo eso de que el tclientdataset es lento, siempre ha sido rápido. |
#3
|
|||
|
|||
Casimiro, si te fijas en Internet en muchas páginas todos se quejan de que el TClientDataSet es lento. Igualmente para descartar te recomiendo que hagas una prueba como he hecho yo.
Yo la prueba la realice comparando el TClientDataSet con el que trae las Jedi y el de las RxLib. Los resultados que me direnon en su momento fue que estos dos ultimos componentes eran mucho mas rápido que el propio de Delphi. De ahí que me decidí a buscar una alternativa para este. Si haces la prueba con muy pocos registros no se nota diferencia, pero la cosa cambia cuando tenes que trabajar con muchisimos registros como es mi caso. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#4
|
||||
|
||||
Cita:
De todas formas, el tkbmemtable y el de las jedi y las rx son "tablas en memoria" que supongo que trabajan distinto. Yo siempre he usado el tkbmemtable y el de las rx, cuando he necesitado tener tablas en memoria. Son muy, muy rápidos. |
#5
|
|||
|
|||
No quiero entrar en la polemica de si es o no es bueno algo. Solo te digo para que lo pienses que hasta Linux puede ser malo segun quien lo mire.
Bueno el tema es ese, además de rápido estoy evaluando que me ofrece de distinto o de nuevo cada uno de esos componentes. Hasta ahora no se con cual quedarme es por eso que consulte. Ya que me dices que has usado el de las RxLib (y parece que te funciono bien y es rápida) y como las tengo instaladas me parece que me inclinaré a usar este asi no tengo que instalar mas cosas. Con las Jedi en mi caso las uso en las empresa donde ya las tienen instaladas, pero en mi máquina son medio reacio a instalarlas debido a que se instalan muchas cosas que no necesito y algunas no se las pued eliminar para no instalar (aunque tiene alguanas cosas interesantes y que funcionan bien). Una última consulta para cerrar esto. Sabes si las RxLib funcionan bien en 64 bits. Se que funcionan porque las versiones no oficiales lo dicen pero no conosco nadie hasta el momento que las alla probado en 64 bits. Muchas gracias por tus comentarios. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#6
|
||||
|
||||
El de las RX va muy bien.
No lo he probado en 64 bits. No me gusta Jedi por lo mismo, porque instala tantísimas cosas que no se usan. |
#7
|
|||
|
|||
#8
|
|||
|
|||
Gracias cloayza por el aporte. Lo había visto hace un tiempo pero nunca lo use ni lo probe.
¿Comparastes los tiempos de usar esa unit con los de otros componentes de terceros tipo KbmMemTable u otros? Sería bueno hacer una prueba y ver que pasa con esos tiempo, ya que si son similares a los de otros componentes no se justifica agregar mas cosas a la compilación ni al Delphi si se tiene alguno instalado y funciona bien y rápido. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#9
|
|||
|
|||
Amigos, he encontrado en distintos sitios de Internet que dicen que las RxMemoryData no funcionan bien desde la versión de Delphi XE hasta la XE4, por lo que no recomiendo usarlos por el momento.
Despues de leer esos comentarios hice una prueba con la versión mas reciente bajada del sitio http://www.micrel.cz/RxLib/ y efectivamente no funcionan como corresponde. Parece que no toma bien los valores cuando se realiza el post. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#10
|
||||
|
||||
En concreto, ¿qué operaciones son las que encuentras lentas?
|
#11
|
||||
|
||||
Cita:
|
#12
|
|||
|
|||
Sobre en que operación lo encuentro lento. Te cuento que lo he usado para hacer una importación de datos a Firebird de bases que vienen de DBF (uso los TDbf) y son lentos cuando se trata de insertar muchos registros. Si insertas un solo registro ni te das cuenta. Hablo con una importación de 10.000 registros mas o menos y con unos 5 campos por registro.
También he importado a Firebird con TClientDataSet desde archivos de texto plano, pero no con tantos registros como lo anterior y también he notado que tarda mucho Con respecto a las RxMemoryData que dicen que funcionan en Delphi XE4, primero hay que ver con que versión de las RxLib esta trabajando. Yo he probado la última versión en Delphi 7 y Delphi XE3 y en los dos casos no funcionan correctamente. Además si te fijas en la página de Netfalí ahí mismo hay gente que dice que a ellos no les funciona y es con varias versiones de Delphi. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#13
|
|||
|
|||
Esta bien, no vale la pena entrar en discución por este tema. Una cosa mas, entonces porque todo el mundo se pasa a usar otros componentes en vez de usar los nativos de Delphi TClientDataSet? Por algo será.
Para que quede claro las pruebas que hice fueron insertando dos campos uno string y el otro float. No le hice ningún prosesamiento a esos datos, simplemente los inserte y los resultados fueron que con los TClientDataSet tardaba mas que con los RxLib. No es que este diciendo algo solo porque en la misma página de kbmMemTable dicen que son mas rápidos que otros. Siempre he tomado con pinsas lo que dicen de cada cosa los desarrolladores porque ellos mismos no van a decir nada malo de lo que hacen y con eso de que son mas rápidos es propaganda. Si no aporta algun otro componente doy por cerrado esto para no discutir sobre algo que no tiene sentido y que se que cada uno tiene su punto de vista. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#14
|
||||
|
||||
elrayo76,
Cita:
Cita:
Espero sea útil Nelson. |
#15
|
||||
|
||||
Hola El Rayo.
Según los dos procesos que describes (importar registros a una base de datos e insertar registros en un conjunto de datos de memoria), y tratando de atar cabos con la información que ofreces, podría recomendarte lo siguiente: 1. Para insertar a una base de datos registros que provienen de otra, es mejor prescindir de cualquier componente DataSet, ya que usar éste como intermediario sin duda hará que el proceso sea más lento. Es mejor realizar las inserciones enviando instrucciones Insert Into directamente a la base de datos mediante el objeto Conection/Database que estés empleando. 2. Si por cualquier otra razón, necesitas agregar miles de registros a un conjunto de datos de memoria, la clase nativa TClientDataSet sigue siendo una buena opción. Hay que saber qué propiedades activarle o desactivarle para que no realice trabajo innecesario. Por ejemplo, puedes cambiar su propiedad LogChanges a False, con lo cual obtendrás un beneficio de tiempo notable. Además, aunque es un poco más elaborado, puedes saltarte los clásicos métodos Insert, Append y otros, y agregar los registros mediante llamadas de bajo nivel a las interfaces DSBase y DSCursor que contiene el objeto, es decir, ejecutando directamente rutinas de MIDAS. Con ello te ahorras un montón de trámites que la clase hereda de TDataSet. Yo me despido de este hilo, pero te invito a sentirte como en casa con las grandes consideraciones que compañeros como Casimiro tienen hacia las personas que necesitan ayuda. Así como él, hay muchos otros que lo único que buscan es apoyar a los miembros de la Comunidad Delphi (siempre y cuando éstos realmente se quieran dejar ayudar). Que tengas bonita tarde, te dejo en buenas manos. Al González. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Insertar registros en TClientDataSet para no actualizarlos | delphijm | Conexión con bases de datos | 9 | 11-02-2011 20:05:51 |
TClientDataSet con SQL | PacoPepe | SQL | 3 | 23-11-2007 19:34:28 |
Procedure en Firebird lento o IbQuery lento | capo979 | Firebird e Interbase | 14 | 17-07-2007 21:35:36 |
TClientDataSet y el SO | tgsistemas | OOP | 4 | 02-08-2004 15:01:20 |
TClientDataSet | saul_montalvo | Conexión con bases de datos | 1 | 08-09-2003 04:38:10 |
|