]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - doc/InformeTP3.lyx
Cambios minimos, no se si entraran en la impresion :(
[z.facultad/75.06/jacu.git] / doc / InformeTP3.lyx
index f2c2ae58c9e1172c19deced839bce4c704d9c9c1..4a8d1de347b2c4b3225205df57fc2b66e150bd6a 100644 (file)
@@ -142,6 +142,66 @@ Word-Scaping
  (Optimización para textos detallada posteriormente)
 \layout Section
 
+Compilación
+\layout Standard
+
+Para compilar es necesario el programa 
+\family typewriter 
+make
+\family default 
+ (además de un compilador, por supuesto, para desarrollar utilizamos 
+\family typewriter 
+gcc
+\family default 
+ 3.3.x).
+ Sólo hay que correr en el directorio 
+\family typewriter 
+src/
+\family default 
+:
+\layout LyX-Code
+
+make depend
+\layout LyX-Code
+
+make
+\layout Standard
+
+El 
+\family typewriter 
+make depend
+\family default 
+ utiliza la herramienta 
+\family typewriter 
+makedepend
+\family default 
+ que analiza los archivos fuentes 
+\family typewriter 
+.c
+\family default 
+ y busca sus dependencias con archivos 
+\family typewriter 
+.h
+\family default 
+ observando la directiva 
+\family typewriter 
+#include
+\family default 
+.
+ De esta manera se simplifica el mantenimiento del 
+\family typewriter 
+Makefile
+\family default 
+.
+\layout Standard
+
+El 
+\family typewriter 
+make
+\family default 
+ se encarga de la compilación en sí.
+\layout Section
+
 Modo de uso
 \layout Standard
 
@@ -159,7 +219,7 @@ Como hemos ancitipado anteriormente, el compresor cuenta con features especiales
  Antes de pasar a su descripción, notamos la invocación general para comprimir
  y descomprimir un archivo como se pidió en el enunciado
 \begin_inset Foot
-collapsed true
+collapsed false
 
 \layout Standard
 
@@ -229,7 +289,7 @@ La opci
 -t
 \family default 
  opcional que permite generar un archivo comprimido multivolumen, donde
- volsize será el tamaño en kbytes de cada volúmen, excepto el último que
+ volsize será el tamaño en kbytes de cada volumen, excepto el último que
  podrá ser menor.
 \layout Subsection
 
@@ -241,8 +301,8 @@ La opci
 Opciones adicionales
 \layout Standard
 
-Ademas de los flags standards que hemos visto recién, nuestro compresor
- cuenta con otra serie de ellos para la utilización de los features especiales
+Además de los flags estándar que hemos visto recién, nuestro compresor cuenta
+ con otra serie de ellos para la utilización de los características especiales
  que veremos más adelante.
  A fines de documentar la totalidad de los flags de ejecución, detallamos
  los anteriores y los adicionales a continuación:
@@ -253,7 +313,7 @@ Ademas de los flags standards que hemos visto reci
 \family typewriter 
 -c
 \family default 
- Indica que se desea comprimir un archivo (mutualmente exclusivo con 
+ Indica que se desea comprimir un archivo (mutuamente exclusivo con 
 \family typewriter 
 -d
 \family default 
@@ -265,8 +325,7 @@ Ademas de los flags standards que hemos visto reci
 \family typewriter 
 -d
 \family default 
- Indica que se desea descomprimir un archivo (mutualmente exclusivo con
+ Indica que se desea descomprimir un archivo (mutuamente exclusivo con 
 \family typewriter 
 -c
 \family default 
@@ -298,6 +357,19 @@ Zero Grouping
 \labelwidthstring 00.00.0000
 
 
+\family typewriter 
+-r
+\family default 
+ Puede ser utilizado únicamente en una compresión y activa el característica
+ de 
+\series bold 
+Word Scaping
+\series default 
+, que realizar un reemplazo de palabras frecuentes antes del BlockSorting.
+\layout List
+\labelwidthstring 00.00.0000
+
+
 \family typewriter 
 -s
 \family default 
@@ -340,7 +412,23 @@ Huffman
  Especifica la calidad (nivel) de compresión.
  Puede ser un valor entre 0 y 9, siendo 0 el menor nivel de compresión (más
  rápido) y 9 el máximo (más lento).
- Por omisión se utiliza un nivel de compresión 5.
+ Por omisión se utiliza un nivel de compresión 5
+\begin_inset Foot
+collapsed true
+
+\layout Standard
+
+Cada valor de este parámetro está asociado a un tamaño de página usado para
+ el algoritmo de 
+\series bold 
+Block Sorting
+\series default 
+.
+ Los tamaños de página en bytes son, de 0 a 9 respectivamente: 1K, 2K, 4K,
+ 8K, 16K, 32K, 64K, 128K, 256K y 512K.
+\end_inset 
+
+.
 \layout Subsubsection*
 
 Ejemplos
@@ -444,7 +532,7 @@ En una implementaci
 
 El otro problema es el tiempo de ordenamiento de los desplazamientos, que
  debe ser lo menor posible.
- Una posibiliad es utilizar un método de ordenamiento de bajo órden, como
+ Una posibilidad es utilizar un método de ordenamiento de bajo orden, como
  el Quick Sort
 \begin_inset Foot
 collapsed true
@@ -650,7 +738,7 @@ abcd
 
 \layout LyX-Code
 
-Salida: 00001011001000200020101000300010004
+Salida:    000010110010000200020101000300001000
 \layout Standard
 
 Un símbolo es codificado como el índice (ó posición) en la lista de símbolos
@@ -684,11 +772,11 @@ Si bien no ahondaremos en detalles de implementaci
  compresor.
  Antes, es necesario comentar que el estado del compresor, se mantiene a
  través de una estructura definida como 
-\series bold 
+\family typewriter 
 HUFF_STATE
-\series default 
-, en la cual se especificarán cosas tales como si el compresor actua sobre
- archivos o chunks de datos, si es un huffman canonico o standard, archivo
+\family default 
+, en la cual se especificarán cosas tales como si el compresor actúa sobre
+ archivos o chunks de datos, si es un huffman canónico o estándar, archivo
  a comprimir, archivo destino, etc.
 \layout Paragraph
 
@@ -700,32 +788,27 @@ ado utilizando las rutinas:
 
 
 \family typewriter 
-\noun on 
 HUFF_STATE *shuff_init_encoder_byfile(char *inputfile, char *outputfile,
  long volsize);
 \layout Itemize
 
 
 \family typewriter 
-\noun on 
 HUFF_STATE *shuff_init_encoder_bychunk(char *outputfile, long volsize);
 \layout Itemize
 
 
 \family typewriter 
-\noun on 
 HUFF_STATE *shuff_init_decoder(char *inputfile, char *outputfile);
 \layout Itemize
 
 
 \family typewriter 
-\noun on 
 void shuff_deinit_encoder(HUFF_STATE *shuff);
 \layout Itemize
 
 
 \family typewriter 
-\noun on 
 void shuff_deinit_decoder(HUFF_STATE *shuff);
 \layout Standard
 
@@ -771,7 +854,7 @@ Persistencia del Modelo Estad
 
 \series medium 
 A fines de poder grabar o cargar un modelo de orden-0 el cual simplemente
- consiste en una tabla de frecuencias/probabilidades de los 255 symbolos
+ consiste en una tabla de frecuencias/probabilidades de los 255 símbolos
  posibles en un archivo, dando lugar al Huffman Canónico que será explicado
  posteriormente, se cuenta con dos funciones: 
 \family typewriter 
@@ -780,6 +863,75 @@ shuff_save_model()
 , y 
 \family typewriter 
 shuff_load_model()
+\layout Subsection
+
+Virtual File
+\layout Standard
+
+Uno de los problemas que teníamos al principio era que las tareas estaban
+ mezcladas, entonces donde se estaba comprimiendo, se estaba guardando también
+ en un archivo y manejando la lógica de hacer los splits de los archivos.
+\layout Standard
+
+Obviamente como eso resultaba muy molesto planteamos un modelo más abstracto
+ al que llamamos 
+\emph on 
+Virtual File
+\emph default 
+, que es una API escrita sobre la API ANSI-C de Input/Output que maneja
+ de manera transparente este tema.
+\layout Standard
+
+Utilizar la API esta tan simple como agregar una 
+\begin_inset Quotes eld
+\end_inset 
+
+v
+\begin_inset Quotes erd
+\end_inset 
+
+ delante de las funciones 
+\family typewriter 
+fopen
+\family default 
+, 
+\family typewriter 
+fclose
+\family default 
+, 
+\family typewriter 
+fread
+\family default 
+, etc y reemplazar la estructura 
+\family typewriter 
+FILE
+\family default 
+ por 
+\family typewriter 
+VFILE
+\family default 
+.
+\layout Standard
+
+Cuando se abre un archivo para escritura a medida que se van escribiendo
+ bytes se va incrementando un contador.
+ Si el contador llega al limite pedido, se cierra el archivo actual, se
+ abre el siguiente y se sigue escribiendo en éste, de manera totalmente
+ transparente para el usuario/programador.
+\layout Standard
+
+La lectura es similar.
+ Cada vez que se llega al EOF de un archivo, si éste no es el último volumen,
+ se cierra el archivo actual y se abre el siguiente hasta llegar al EOF
+ del último volumen.
+\layout Standard
+
+Esta API sólo agrega un byte de información de control delante de cada volumen,
+ que indica si es el último volumen del archivo virtual.
+ De esta manera se pueden abrir y leer archivos virtuales sin saber a priori
+ el tamaño de los volúmenes (hasta se podría ampliar la API de escritura
+ para que cada volumen tenga un tamaño distinto y la API de lectura seguiría
+ funcionando sin cambios).
 \layout Section
 
 
@@ -918,6 +1070,30 @@ N
  vez superan los 50 ceros seguidos, por lo que de utilizar más de un byte
  para expresar la cantidad de ceros que siguen al primero se obtendrían
  peores resultados.
+\layout Standard
+
+Con respecto a los tiempos, como se puede observar en el capítulo 
+\begin_inset LatexCommand \ref{cha:Benchmarks}
+
+\end_inset 
+
+, en muchos casos es incluso más rápido usar el 
+\series bold 
+ZG
+\series default 
+ ya que el 
+\series bold 
+Huffman
+\series default 
+ tiene que comprimir menos y el proceso del 
+\series bold 
+ZG
+\series default 
+ es mucho menor que el del 
+\series bold 
+Huffman
+\series default 
+.
 \layout Subsubsection*
 
 Ejemplo:
@@ -954,7 +1130,7 @@ ZG
 \series default 
  es de 22 (incluso cuando hubieron expansiones).
  Como se podrá ver en las pruebas del capítulo 
-\begin_inset LatexCommand \vref{cha:Benchmarks}
+\begin_inset LatexCommand \ref{cha:Benchmarks}
 
 \end_inset 
 
@@ -1073,11 +1249,11 @@ Benchmarks
 Prueba Calgary Corpus
 \layout Standard
 
-El set de prueba Calgary Corpus Test es utilizado internacionalmente para
- la prueba y comparación de compresores, contando con archivos diseñados
- especificamente para estos fines.
- Es por ello que hemos utilizado dicho set y a continuación exponemos los
- resultados:
+El conjunto de prueba Calgary Corpus Test es utilizado internacionalmente
para la prueba y comparación de compresores, contando con archivos diseñados
+ específicamente para estos fines.
+ Es por ello que hemos utilizado dicho conjunto y a continuación exponemos
los resultados:
 \layout Standard