martes, 20 de julio de 2010

Arwinss: Arwinss Vs Win32Ros (II)

 

2 Ayer publicamos la primera parte del estudio comparativo entre Arwinns y Win32Ros.

Es recomendable su lectura antes de continuar leyendo esta entrada, pues allí se detalla qué estamos haciendo, cómo lo estamos haciendo y se explican las gráficas que veréis a continuación.

El estudio se ha realizado con Arwinss 47966 y con Win32Ros 47966.

Sin más …la primera parte de los resultados…

 

 

 

Comctl32

 

Comctl32.dll es una librería de controles comunes ( Common control). Un control común es una ventana que permite la interacción con el usuario. Las Tooltips , la vista tipo árbol (Treeview), las flechas arriba/abajo (Updown) de una barra de desplazamiento, o las barras de progreso (Progress bar),entre otros controles, forman parte de esta librería.

Para más información de los Controles: MSDN

A continuación la tabla que recoge los resultados del testeo de esta Suite:

COMCTL32

 

 

image

Analizando la gráfica de la izquierda destacan los resultados de la subsuite “Monthcal” : En Arwinss se ejecutan más tests, y además con un menor número de fallos.

La Monthcal suite se encarga de testear el control tipo calendario. Este es el tipo de control con el que cambiamos la fecha de Windows(por ejemplo).

 

 

De manera similar la subsuite “Status” ejecuta más tests en Arwinss que en Win32Ros y además con un menor número de errores.

La subsuite “Status” testea la “Status Bar” (Barra de Estado). Esta es la barra que aparece en la parte inferior de las ventanas y que sirve para mostrar distinta información.

Sin embargo, la subsuite “Updown” demuestra que el comportamiento del control up-down funciona mejor en Win32Ros que en Arwinss. No solo se ejecutan más tests, sino que además con menos fallos.

 

Comctl32-2

 

A la derecha se muestra la gráfica relativa, que permite ver mejor las  diferencias entre Arwinss y Win32Ros en cada SubSuite.

Este gráfico nos permite ver fácilmente donde Arwinss es mejor y peor que Win32Ros.

 

 

Arwinss es peor en: Updown.

Arwinss es ligeramente peor en: Datetime, Mru, Tooltips.

------------------------------------

Arwinss es mejor en: Trackbar, Treeview

Arwinss es mucho mejor en: Monthcal, Status.

 

Links:

  • About Common Controls: MSDN
  • Control Library: MSDN

 

 

 

 

 

Gdi32

 

Gdi32.dll es la librería de interfaz gráfica, la cual contiene las funciones de dibujado de ventanas y objetos, y de manejo de fuentes, entre otras.

Arwinss ha demostrado que presenta menos fallos gráficos que Win32Ros al testear aplicaciones. Por lo tanto deberíamos observar un (mucho )mejor rendimiento de la Suite GDI32 en Arwinss que en Win32Ros. Aquí hay varios ejemplos: Adobe Reader, Gimp, Evince,

A continuación la tabla que recoge los resultados del testeo de esta Suite:

 

Gdi32

 

Los resultados,obviamente, no son los esperados. Los tests ejecutados y fallados son muy similares como para explicar la notable diferencia visual entre ambos Subsistemas. ¿Cuál es la razón entonces?

 

image

 

En Win32Ros la SubSuite “Font” no llega a finalizar. Todas las SubSuites tienen asignadas un tiempo para terminar el testeo. En caso de que no finalice en el tiempo indicado, la SubSuite es marcada como CANCELADA.

 

Sin embargo, Arwinss no tiene este problema y la Subsuite “Font” finaliza correctamente. Esto podría explicar porqué Arwinss no sufre el problema de fuentes que sí sufre Win32Ros en Firefox 3.5 y superiores. Pero esto no explica la menor cantidad de fallos visuales y gráficos que tiene Arwinss.

imageLos tests ejecutados en Arwinss y Win32Ros son exactamente los mismos, sin embargo Arwinss parece mostrar un mejor resultado en casi todas las SubSuites.

Llama la atención que Arwinss saque peor nota que Win32Ros en las SubSuites “Palette” y “Pen”.

 

Arwinss es ligeramente peor en: Palette, Pen

-------------------------------------

Arwinss es ligeramente mejor en: Gdiobj,Mapping

Arwinss es  mejor en: Path,Clipping,

Arwinss es mucho mejor en : Fonts

 

 

 

 

 

User32

 

User32.dll es la libreria encargada de manejar las ventanas, los mensajes , los timers , los menus  y las comunicaciones.

A continuación la tabla que recoge los resultados del testeo de esta Suite:

 

User32

 

Los resultados de cuatro SubSuites llaman poderosamente la atención.

Por un lado tenemos la SubSuite User32:CursorIcon. Esta Subsuite no termina de completarse en Win32Ros debido a que agota el tiempo asignado para el testeo( CANCELED) mientras que en Arwinss se ejecuta perfectamente. La Subsuite CursorIcon se encarga de testear la creación, carga y destrucción de Iconos y Cursores.

imageEn segundo lugar sorprende los resultados obtenidos de la SubSuite “Input”, mientras que en Win32Ros se ejecutan más de 15000 tests, en Arwinss solo se ejecutan 1300.  La SubSuite “Input” testea las APIs relacionadas con el teclado como son: BlockInput, GetKeyboardState, IsWindowEnabled, SendInput… ¿El talón de Aquiles de Arwinss? Arwinss 0-Win32Ros 1

 

En tercer lugar la SubSuite “MSG”. En Arwinss se ejecutan más de 16000 tests, mientas que en Win32Ros solo se ejecutan 40. En esta SubSuite Arwinss devuelve el tanto anterior. 1-1.

 

El fallo clamoroso que presenta Win32Ros en esta SubSuite puede explicar los problemas gráficos que sufre y que no eran explicados con los resultados del test GDI32.

 

Todos los botones de las Toolbars, cada elemento clickable, cada caja de texto, cada menú desplegable, cada vista tipo árbol, es una Ventana. Todo en Windows y ReactOS son Ventanas. Si tenemos en cuenta que la SubSuite “MSG” se encarga de testear la correcta creación,muestra y posicionamiento/reposicionamiento de Ventanas(ya sean ventanas hijas, ventanas inicialmente no visibles,etc…) mediante las funciones CreateWindow,ShowWindow y SetWindowPos (entre otras), es comprensible que si ReactOS no coloca en el lugar adecuado la Ventana,podamos encontrarnos con ventanas semiocultas y  zonas en las que se ve el fondo de escritorio, o,directamente,con ventanas que no abren.

En Arwinss,además, se completa la SubSuite “Win”, mientras que en Win32Ros no lo hace. Esta SubSuite se encarga de comprobar cual es el dueño de una determinada ventana, para ello va creando y eliminando ventanas padres(de las que dependen las ventanas hijas), asigna como padres a ventanas hijas,muta a ventanas padres para que se comporten como ventanas hijas,etc. Teniendo en cuenta que la SubSuite “MSG” es incapaz de crear correctamente Ventanas, es bastante razonable encontrar muchos problemas en esta SubSuite. Arwinss 2- Win32Ros 1.

 

image Otro pequeño fallo de Arwinss es que aún no parece tener implementada la funcionalidad de Portapapeles como demuestra la SubSuite “Clipboard”. Esta situación va a cambiar pronto ya que los Desarrolladores se encuentran implementándola.

Arwinss 2-Win32Ros 2.

 

Arwinss, por contra, destaca en la SubSuite “dde”, donde no solo corre más tests sino que además lo hace con un menor numero de fallos. La “dde” testea las funciones DDEML, que permite el intercambio de datos en la memoria compartida. Arwinss3-Win32Ros2

Intentando remontar Win32Ros demuestra una ligera superioridad en “Sysparams”. Si bien Arwinss corre 14 test más,lo hace con 70 fallos más. Por lo tanto el balance queda negativo. Arwinss3-Win32Ros3

Algo parecido ocurre con “Listbox” donde Win32Ros ejecuta mayor número de tests(+200) y solo falla en 27 más. Arwinss3-Win32Ros4.

Por último Arwinss consigue reducir el número de fallos en las Suites: “broadcast”,”combo”,”dce”,”dialog”,”edit”,”resource”,”scroll”. Arwinss4(ó 5)-Win32Ros4

 

Arwinss es mucho peor en: Input

Arwinss es peor en: Clipboard,listbox

Arwinss es ligeramente peor en: sysparams

-------------------------------------

Arwinss es ligeramente mejor en: broadcast, combo, dce, dialog, edit, resource, scroll

Arwinss es bastante mejor en : Dde

Arwinss es mucho mejor en: CursorIcon, Msg, Win

 

 

Links:

 

Y mientras vais analizando y digiriendo toda esta gran cantidad de datos, el equipo de “El Blog de ReactOS” continúa creando nuevas gráficas para la tercera y última parte de este estudio…

6 comentarios:

  1. No se porque me parecia entender que los test eran los mismos para ambos sistemas, y no que en uno pasaban diferentes test que al otro. ¿a que se debe esto si en principio deben ofrecer la misma api?

    Saludos

    ResponderEliminar
  2. Muy buenas mcklaw,
    La respuesta a tu pregunta la tienes en la sección "Test Dependientes" de la primera parte del Estudio: http://reactos.wordpress.com/2010/07/19/arwinss-arwinss-vs-win32ros-i/

    Es por ello que recomendé la lectura de la primera parte que,aunque más aburrida,permite entender (mejor) los resultados.

    Si sigues sin entender el porqué de la variación del número de tests no dudes en preguntarlo y pondré un ejemplo explicativo que aclare mejor el concepto. :)
    Un saludo y gracias por seguirnos

    ResponderEliminar
  3. ¡Re-Wow! Creo que los desarrolladores de ReactOS van a sacar bastante jugo de este estudio. Un 10.

    Gracias por el esfuerzo. Espero la última parte.

    ResponderEliminar
  4. Hola reactos,

    A mi entender sino se han ejecutado tests por fallo de dependencia o bien tendrían que computar como fallo o un resultado más de "no pasado", mas que nada porque también es indicativo y no tienes que ir haciendo "la diferencia".

    Pero vamos es un tema de apreciación, no se porque primeramente pensé que todos los que no se ejecutaban por dependencia saldrían como fail, nada mas.

    Saludos!

    ResponderEliminar
  5. News like this should be posted on the Ros front page

    ResponderEliminar
  6. Buenas mcklaw :)
    La verdad es que lo más lógico es lo que tu dices y comparto la misma opinion. Por un lado si los tests dependientes no son ejecutados deberían marcarse como fallos(aunque realmente deberían considerarse como no ejecutados, ya que al no llegar a ser ejecutados no podemos asegurar que fallen o funcionen).
    También deberían indicarse cuantos tests tiene cada SubSuite, pues solo indican el numero de test ejecutados¿pero cuantos no han sido ejecutados?
    Pero estos Winetests provienen de Wine, y por lo tanto,para poder mantenerlos sincronizables, no podemos añadir estos cambios.
    Saludos y gracias por seguirnos :)

    ResponderEliminar