Clase del 30/10/2007 (Diseño Avanzado con Objetos)

De Cuba-Wiki
Revisión del 05:22 4 nov 2007 de 190.55.123.116 (discusión)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

DTS: Para cada clase tiene una tabla con los mensajes que sabe responder esa clase (pero no los mensajes que hereda)

performance: Malo, tardas O(nlog(n)) en encontrar algo memoria: bueno, por no tener duplicados es dinamico? Si, facilmente se puede agregar un método, el cual pega directamente en el method dictionary

STI: Hace una tabla en las columnas pone las clases en las filas pone los metodos en donde se unen, se apunta al metodo si es que la clase lo tiene por herencia o por reimplementarlo si no tiene ese metodo, apunta a DNU

performance: Bueno memoria: Malo, muchas referencias al DNU (doesNotUnderstand) la administracion de la tablas es muy complicada RD y CT hacen lo mismo, compactando la tabla con coloreo

VTBL: Para cada clase tiene una tabla, y para cada selector tiene un indice

performance: Bueno memoria: Malo, duplica mucha informacion en el ejemplo aC m4 (se traduce como) -> call cvt[2]

NO se puede usar en lenguajes dinamicamente tipados por el late binding sabes de que clase es el objeto cuando se envia el mensaje, entonces m4 no lo podes traducir como 2 hasta que no se sepa

Un problema es que al agregar un metodo en una clase, se tiene que agregar en todas las tablas virtuales asociadas al resto de las clases hijas

GLC: Define una cache global con 95% de hit trabaja como un hash abierto “Las tablas hash de direccionamiento abierto pueden almacenar los registros directamente en el arreglo. Las colisiones se resuelven mediante un sondeo del arreglo, en el que se buscan diferentes localidades del arreglo “ [1]

la tabla la arma con las columnas clase mensaje metodo al que apunta

la idea es que cada vez que se haga una busqueda por <clase,mensaje> si no se encuentra en la posicion buscada se mira en la fila siguiente, sino en la otra siguiente de no encontrarlo en las 3 filas, las mismas se vacian y se va a buscar con el algoritmo DTS

IC o PIC: actua como una cache local por cada mensaje con un 80% de hit reemplaza la llamada por una porcion de codigo, en donde se pregunta si la clase del receiver es del tipo buscado, si es asi, tiene la llamada directa al método

es una cache por cada envio de mensajes - existe un costo al enviar el mensaje - se hace cuando el metodo se ejecuta una X cantidad de veces - se pueden evitar los call poniendo el byte-code en la llamada