Este programa fue escrito por Oskar Linde y nuevamente hallado__ en el grupo
de noticias. Fue construido para mostrar como el hecho de que el recolector
sea conservativo puede hacer que al leer datos binarios hayan muchos *falsos
-punteros* que mantengan vivas celdas que en realidad ya no deberían ser
+positivos* que mantengan vivas celdas que en realidad ya no deberían ser
accesibles desde el *root set* del grafo de conectividad.
__ http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=46407
.. flt:: fig:sol-mark-rec
Análisis de tiempo total de ejecución en función del valor de
- ``MAX_DEPTH``.
+ ``MAX_DEPTH``
Tiempo total de ejecución de Dil_ al generar la documentación completa del
código de Tango_ en función del valor de ``MAX_DEPTH``. El rombo no
.. flt:: fig:sol-ptrmap
:type: table
- Estructura de la información de tipos provista por el compilador.
+ Estructura de la información de tipos provista por el compilador
.. aafig::
:scale: 110
.. flt:: fig:sol-ptrmap-example
- Ejemplo de estructura de información de tipos generada para el tipo ``S``.
+ Ejemplo de estructura de información de tipos generada para el tipo ``S``
.. aafig::
:textual:
.. flt:: fig:sol-ptrmap-blk
Ejemplo de bloque que almacena un objeto de tipo ``S`` con información de
- tipo.
+ tipo
.. aafig::
:scale: 110
.. flt:: t:sol-setarch
:type: table
- Variación entre corridas para TBGC.
+ Variación entre corridas para TBGC
Variación entre corridas para TBGC. La medición está efectuada utilizando
los valores máximo, mínimo y media estadística de 20 corridas, utilizando
Ambas opciones, reducen notablemente la variación en los resultados (ver
cuadro :vref:`t:sol-setarch`). Esto probablemente se debe a la naturaleza
conservativa del recolector, dado que la probabilidad de tener *falsos
-punteros* depende directamente de los valores de las direcciones de memoria,
+positivos* depende directamente de los valores de las direcciones de memoria,
aunque las pruebas en la que hay concurrencia involucrada, se siguen viendo
grandes variaciones, que probablemente estén vinculadas a problemas de
sincronización que se ven expuestos gracias al indeterminismo inherente a los
.. flt:: fig:sol-bigarr-1cpu
- Resultados para ``bigarr`` (utilizando 1 procesador).
+ Resultados para ``bigarr`` (utilizando 1 procesador)
Resultados para ``bigarr`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-bigarr-4cpu
- Resultados para ``bigarr`` (utilizando 4 procesadores).
+ Resultados para ``bigarr`` (utilizando 4 procesadores)
Resultados para ``bigarr`` (utilizando 4 procesadores). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-concpu-1cpu
- Resultados para ``concpu`` (utilizando 1 procesador).
+ Resultados para ``concpu`` (utilizando 1 procesador)
Resultados para ``concpu`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-concpu-4cpu
- Resultados para ``concpu`` (utilizando 4 procesadores).
+ Resultados para ``concpu`` (utilizando 4 procesadores)
Resultados para ``concpu`` (utilizando 4 procesadores). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-conalloc-1cpu
- Resultados para ``conalloc`` (utilizando 1 procesador).
+ Resultados para ``conalloc`` (utilizando 1 procesador)
Resultados para ``conalloc`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-conalloc-4cpu
- Resultados para ``conalloc`` (utilizando 4 procesadores).
+ Resultados para ``conalloc`` (utilizando 4 procesadores)
Resultados para ``conalloc`` (utilizando 4 procesadores). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-split-1cpu
- Resultados para ``split`` (utilizando 1 procesador).
+ Resultados para ``split`` (utilizando 1 procesador)
Resultados para ``split`` (utilizando 1 procesador). Se presenta el mínimos
(en negro), la media centrada entre dos desvíos estándar (en gris), y el
.. flt:: fig:sol-mcore-1cpu
- Resultados para ``mcore`` (utilizando 1 procesador).
+ Resultados para ``mcore`` (utilizando 1 procesador)
Resultados para ``mcore`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-mcore-4cpu
- Resultados para ``mcore`` (utilizando 4 procesadores).
+ Resultados para ``mcore`` (utilizando 4 procesadores)
Resultados para ``mcore`` (utilizando 4 procesadores). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-rnddata-1cpu
- Resultados para ``rnddata`` (utilizando 1 procesador).
+ Resultados para ``rnddata`` (utilizando 1 procesador)
Resultados para ``rnddata`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
El aumento en el variación de los tiempos de ejecución al usar marcado preciso
probablemente se debe a lo siguiente: con marcado conservativo, debe estar
sobreviviendo a las recolecciones el total de memoria pedida por el programa,
-debido a falsos punteros (por eso no se observa prácticamente variación en el
+debido a *falsos positivos* (por eso no se observa prácticamente variación en el
tiempo de ejecución y memoria máxima consumida); al marcar con precisión
-parcial, se logra disminuir mucho la cantidad de falsos punteros, pero el
+parcial, se logra disminuir mucho la cantidad de *falsos positivos*, pero el
*stack* y la memoria estática, se sigue marcado de forma conservativa, por lo
tanto dependiendo de los valores (aleatorios) generados por la prueba, aumenta
-o disminuye la cantidad de falsos punteros, variando así la cantidad de
+o disminuye la cantidad de *falsos positivos*, variando así la cantidad de
memoria consumida y el tiempo de ejecución.
No se muestran los resultados para más de un procesador por ser demasiado
.. flt:: fig:sol-bh-1cpu
- Resultados para ``bh`` (utilizando 1 procesador).
+ Resultados para ``bh`` (utilizando 1 procesador)
Resultados para ``bh`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: t:sol-prec-mem-bh
:type: table
- Memoria pedida y asignada para ``bh`` según modo de marcado.
+ Memoria pedida y asignada para ``bh`` según modo de marcado
Memoria pedida y asignada para ``bh`` según modo de marcado conservativo
o preciso (acumulativo durante toda la vida del programa).
.. flt:: fig:sol-bisort-1cpu
- Resultados para ``bisort`` (utilizando 1 procesador).
+ Resultados para ``bisort`` (utilizando 1 procesador)
Resultados para ``bisort`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-em3d-1cpu
- Resultados para ``em3d`` (utilizando 1 procesador).
+ Resultados para ``em3d`` (utilizando 1 procesador)
Resultados para ``em3d`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-tsp-1cpu
- Resultados para ``tsp`` (utilizando 1 procesador).
+ Resultados para ``tsp`` (utilizando 1 procesador)
Resultados para ``tsp`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-voronoi-1cpu
- Resultados para ``voronoi`` (utilizando 1 procesador).
+ Resultados para ``voronoi`` (utilizando 1 procesador)
Resultados para ``voronoi`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-voronoi-4cpu
- Resultados para ``voronoi`` (utilizando 4 procesadores).
+ Resultados para ``voronoi`` (utilizando 4 procesadores)
Resultados para ``voronoi`` (utilizando 4 procesadores). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
para TBGC se ve una variación entre los resultados muy grande que desaparece
al cambiar a CDGC, esto no puede ser explicado por esa optimización. En
general la disminución de la variación de los resultados hemos visto que está
-asociada al incremento en la precisión en el marcado, dado que los falsos
-punteros ponen una cuota de aleatoriedad importante. Pero este tampoco parece
-ser el caso, ya que no se observan cambios apreciables al pasar a usar marcado
-preciso.
+asociada al incremento en la precisión en el marcado, dado que los *falsos
+positivos* ponen una cuota de aleatoriedad importante. Pero este tampoco
+parece ser el caso, ya que no se observan cambios apreciables al pasar a usar
+marcado preciso.
Lo que se observa en esta oportunidad es un caso patológico de un mal factor
de ocupación del *heap* (ver :ref:`sol_ocup`). Lo que muy probablemente está
.. flt:: fig:sol-dil-1cpu
- Resultados para ``dil`` (utilizando 1 procesador).
+ Resultados para ``dil`` (utilizando 1 procesador)
Resultados para ``dil`` (utilizando 1 procesador). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: fig:sol-dil-4cpu
- Resultados para ``dil`` (utilizando 4 procesadores).
+ Resultados para ``dil`` (utilizando 4 procesadores)
Resultados para ``dil`` (utilizando 4 procesadores). Se presenta el
mínimos (en negro), la media centrada entre dos desvíos estándar (en gris),
.. flt:: t:sol-prec-mem-dil
:type: table
- Memoria pedida y asignada para ``dil`` según modo de marcado.
+ Memoria pedida y asignada para ``dil`` según modo de marcado
Memoria pedida y asignada para ``dil`` según modo de marcado conservativo
o preciso (acumulativo durante toda la vida del programa).
============== ============== ============== =================
El pequeño incremento en el tiempo total de ejecución podría estar dado por la
-mayor probabilidad de tener *falsos punteros* debido al incremento del tamaño
+mayor probabilidad de tener *falsos positivos* debido al incremento del tamaño
del *heap*; se recuerda que el *stack* y memoria estática se siguen marcado de
forma conservativa, incluso en modo preciso.