[Opinion] Problema acerca de optimización en código - Uso dinámico de arrays

Iniciado por Miky Gonzalez, 18 Noviembre 2014, 17:58 PM

0 Miembros y 2 Visitantes están viendo este tema.

engel lex

hey gente! XD calma!

ivancea96 hay muchas cosas que requieren arrays dinamicos en general realloc es bastante usada...

Miky Gonzalez con calma XD él está expresando su opinión y desde tu primera respuesta hacia el, fue un poco aspera :P

hay opiniones diferentes... ambas son importantes, pero deben ser tomadas en cuenta, posiblemente cada via sea más valida según el caso especifico, pero requeriría un análisis puntual del problema
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Miky Gonzalez

Ah no  ;D
Sólo intento mostrarle que igual los arrays fijos/estáticos en memoria no son las soluciones a todos nuestros problemas y necesitamos de vez en cuando hacer las cosas para un todo, dinámicamente hablando; porque no en todo sabemos que nos vamos a encontrar ni la longitud/tamaño de datos que vamos a almacenar.

Saludos.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

ivancea96

Cita de: engel lex en 18 Noviembre 2014, 20:32 PM
ivancea96 hay muchas cosas que requieren arrays dinamicos en general realloc es bastante usada...

Y no estoy en contra del realloc. Estoy en contra de abusar del realloc.


Cita de: Miky Gonzalez en 18 Noviembre 2014, 20:26 PM
Suponiendo que vamos a analizar un archivo de 1GB de datos, ¿cómo se supone que puedes saber los elementos a analizar?, voy a inventarme el contenido de un archivo:

Suponiendo que tengas 1GB de datos, no creo que sea necesario guardarlo todo en un array (...)

Pero a parte de eso: Según el método de potencias de 2, si hay 1GB+1byte de elementos, acabarías ocupando 2GB de RAM, que no es una broma. Y es sólo un ejemplo.

Y repito, en ningún momento he hablado yo de arrays estáticos. Siempre he hablado de dinámicos y he orientado todo lo que he dicho a arrays dinámicos.

No se trata de obtener el tamaño del array que vamos a necesitar, se trata de obtener el incremento en el realloc.

Miky Gonzalez

CitarSuponiendo que tengas 1GB de datos, no creo que sea necesario guardarlo todo en un array (...)

Pero a parte de eso: Según el método de potencias de 2, si hay 1GB+1byte de elementos, acabarías ocupando 2GB de RAM, que no es una broma. Y es sólo un ejemplo.

Y repito, en ningún momento he hablado yo de arrays estáticos. Siempre he hablado de dinámicos y he orientado todo lo que he dicho a arrays dinámicos.

No se trata de obtener el tamaño del array que vamos a necesitar, se trata de obtener el incremento en el realloc.

Te respondo con algo que ya escribí:

CitarEn cuanto a almacenar 1GB de datos para luego convertirlos a 2GB sólo por añadir 1 datos más eso es problema del programador. Me explico, aunque es irrazonable crear un array de 1GB para estudiarlo u operar con él, el programador debería definir un tamaño máximo de memoria ocupada por array para que no pasen esas cosas, es decir, dividir en varios segmentos el sistema total.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

ivancea96

Por más que dividas en 1 o en 100 segmentos, seguirán siendo 2GB ocupadas, la mitad libres. Un crecimiento exponencial es peligroso.

Miky Gonzalez

No tiene razón en ese aspecto. Te explico:

Si yo limito cada array de datos a, digamos, 16Mb de datos, me aseguro que almenos mi pérdida de datos no será mayor de 8Mb. Esto es, en el momento que yo almacene 16Mb + 1byte, se pasará a otro array dinámico, es decir, en el peor caso la pérdida será de 16Mb / 2 + 1byte: 8Mb - 1byte de pérdida.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

ivancea96

Entonces ya no estás usando tu método. Entonces estás incrementando 16Mb/realloc. Eso ya no es el tema.

Miky Gonzalez

No incremento 16Mb por realloc. Una vez ocupado los 16Mb, hago una nueva variable qie seguiria aumentando hasta los 16Mb.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

ivancea96

Entonces ese sistema es terriblemente más ineficiente. Si quiero coger 500MB, haz cálculos del número de reallocs.

Miky Gonzalez

¿Ineficiente porqué?, si el tamaño medio de datos a cojer es de 50Mb puedo almacenar los datos en esos 50Mb de datos, el programador decide si almacenarlo en 1 Array, o en 500 Arrays.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN