Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Voluntarios Para Probar Este Benchmark

Iniciado por TheAzazel, 22 de Julio de 2005, 09:57:42 PM

« anterior - próximo »

TheAzazel

 Bueno,

lo he probado en los 3 equipos q tengo en casa, he subido una nueva version, la defintiva, no os preocupes, la diferencia es la salida, ahora lo hace en html que queda mejor y un par de cosillas por ahi, pero nada que afecte al rendimiento.

@zupervaca, he probado a ejecutar estos test del modo que el tuyo(sin barra y saliendose los conejitos) y la diferencia de rendimiento es de un 8% mas o menos, asi que, en los equipos que yo lo he probado, tu version va ligeramente mas rapida(350fps usando D3D y 300fps usando Opengl sobre SDL). Creo que esa dif es minima si se compara con la ventaja que genera... es multiplaforma cuando D3D no lo es :P

Veo que casi todo el mundo tiene ATI...necesitos mas NVIDIA o marcas de 3º...alguno por ahi?? jeje
De todos modos, muchas gracias a todos por postear los resultados.
Volvere dentro de un tiempo con este benchmark ampliado, una vez glSDL este implementado en CRM32Pro, y mostrara render por software normal, por software optimizado de CRM32Pro(si es q gana algo claro) y una optimizacion q tengo en mente para evitar un poco el redibujado...

ahh, mis test:


zupervaca

 he subido una version nueva para que puedas probarlo, a mi evitando el escape por los bordes me ha bajado unas 50fps, entre el test de opengl ya hay menos diferencia, unos 200fps mas o menos, pero los resultados de el test de sdl de directx son muy bajos

con 1000 conejos mi resultado es este:
mi test directx: ~870fps
sdl test directx: ~140fps <-- este resultado es el que mas me preocupa, algo tienen que estar haciendo mal
sdl test opengl: ~670fps

la diferencia entre directx y opengl en tarjetas cutres puede ser importante pero como dices creo que importa mas la multiplataforma, no obstante si sdl va a dar soporte de directx deberian optimizarlo mas que es el dato mas preocupante

saludos

pd: el test sigue en la misma url


editado: he probado el test con 100 conejos:
mi test directx: ~4400fps
sdl test directx: ~1425fps
sdl test opengl: ~3157fps

la diferencia crece bastante, estamos hablando de 1200fps mas vs opengl y ni contar de directx :huh:


editado2: me imagino donde puede estar el problema aunque sin ver el codigo es dar palos de ciego
este codigo
           this.Bob.Begin(SpriteFlags.AlphaBlend);
           for (int i = 0; i < Conejos.GetLength(0); i++)
           {
               Conejos[i].Draw(this.Bob, this.Picture);
           }
           this.Bob.End();

es mucho mas rapido que este
           for (int i = 0; i < Conejos.GetLength(0); i++)
           {
               this.Bob.Begin(SpriteFlags.AlphaBlend);
               Conejos[i].Draw(this.Bob, this.Picture);
               this.Bob.End();
           }

ya que el begin y el end hace cambios de estado, revisa cosas asi, el problema puede ser algo de esto o algo parecido

saludos

BeRSeRKeR

 Si no he entendido mal, en el test de TheAzazel, cuando se refiere a DirectX está hablando de DDraw y no de Direct3D con lo que la diferencia de frame rate entre DX y OpenGL me parece que entra dentro de lo lógico, ¿no?.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

TheAzazel

 El codigo directx esta bien... es lento pq es ddraw y eso ya la gente pasan de el... es mucho mas rapido direct3d u opengl en modo 2d que el propio ddraw (salvo tarjetas antiguas).

Justo de eso el que el backend de opengl sea importante(para mi), porque va bastante mas rapido todo y SOPORTA alpha por hardware, cosa q antes, habia que hacerlo por softwarey eso era lentisimmooo. Y no solo alpha por hardware en windows si no en cualquier plataforma q soporte SDL y OpenGL.

En mi equipo las diferencas entre direct3d(tu test) y opengl(mi test) en igualdad de condiciones no son tan grandes como en el tuyo jeje. Va mas rapido direct3d pero como dije en el post anterior..de 350fps baja a 300fps, a lo mejor a otros niveles esta mas desquilibrao o que las geforce6800(q suerte tienes jeje) es una bala en d3d.

el caso es q fijate tu la de conclusiones que hemos sacado :)

Pogacha

 En realidad la diferrencia entre OpenGL y DirectX no importaria para maquinas nuevas si lo que quieres hacer es 2D ... yo me centraria en buscar maquinas viejas con placas de video viejas (4 a 32 mb) sin PS ni nada de eso ahí, si podes comparar DDraw y OpenGL.

Saludos

TheAzazel

 uhmm...
acabo de probar el ultimo test de zupervaca(1000 conejos con d3d) y me he llevado una sopresa. Mi equipo es el XP3000 con una 9700Pro:

Todos a 800x600x32 con doublebuffer activado.

Direct3d: 261fps modo window
Direct3d: 310fps modo fullscreen(picos, no se si son mantenidos..., no veo el titulo de la ventana jeje)

Opengl: 263fps modo window
Opengl: 290fps modo fullscreen

Luego en mi equipo van parejos!!.

A ver si alguien mas se anima y prueba el test de zupervaca tambien para comparar y asi averiguamos porque el tiene esa diferencia tan grande entre d3d y opengl...sera la geforce6800??

El valor que teneis que comparar de glSDL-Bench contra el de zupervaca esta en la esquina inferior derecha de la tabla, el modo opengl+fullscreen+double buffer.

enga, postear resultados!!  

zupervaca

 he creado el test que seria para directdraw y efectivamente es la cosa mas lento que ha existido sobre la tierra jaja, aqui os pongo el codigo por si os puede interesar, si alguien quiere el proyecto completo que me lo diga que lo subo, pero no merez ni la pena, a mi me da 150 fps con los 1000 conejos miserables  :P
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX.DirectDraw;
using dib.DirectX;

namespace TestDirectDraw
{
   public partial class Form1 : Form
   {
       public Device device;
       public Surface picture;
       public Surface front, back;
       public Clipper clip;

       private dibFPS FPS = new dibFPS();
       
       private Conejo[] Conejos = new Conejo[1000];

       public class Conejo
       {
           public Point Position;
           public Point Dir;
           public void Draw(Surface back, Surface picture)
           {
               Position.X += Dir.X;
               Position.Y += Dir.Y;
               if (Position.X < 0)
               {
                   Position.X = 0;
                   Dir.X *= -1;
               }
               if (Position.X > 800 - 100)
               {
                   Position.X = 800 - 100;
                   Dir.X *= -1;
               }
               if (Position.Y < 0)
               {
                   Position.Y = 0;
                   Dir.Y *= -1;
               }
               if (Position.Y > 600 - 100)
               {
                   Position.Y = 600 - 100;
                   Dir.Y *= -1;
               }
               back.DrawFast(Position.X, Position.Y, picture, DrawFastFlags.DoNotWait);
           }
       }

       public Form1()
       {
           InitializeComponent();
       }

       private void Form1_Load(object sender, EventArgs e)
       {
           this.FormBorderStyle = FormBorderStyle.None;

           SurfaceDescription sd = new SurfaceDescription();
           this.device = new Device();
           this.device.SetDisplayMode(800, 600, 32, 60, true);
           this.device.SetCooperativeLevel(this, CooperativeLevelFlags.FullscreenExclusive);
           
           sd.SurfaceCaps.PrimarySurface = true;
           sd.BackBufferCount = 1;
           sd.SurfaceCaps.Flip = true;
           sd.SurfaceCaps.Complex = true;
           this.front = new Surface(sd, device);
           sd.Clear();
           
           SurfaceCaps caps = new SurfaceCaps();
           caps.BackBuffer = true;
           this.back = front.GetAttachedSurface(caps);
           this.back.FillColor = Color.White;

           this.clip = new Clipper(this.device);
           this.clip.Window = this;
           this.front.Clipper = clip;

           this.picture = new Surface("../../icon.bmp", sd, this.device);

           Random rand = new Random();
           for (int i = 0; i < Conejos.GetLength(0); i++)
           {
               Conejos[i] = new Conejo();
               Conejos[i].Position = new Point(rand.Next(500), rand.Next(500));
               Conejos[i].Dir = new Point(rand.Next(-4, 4), rand.Next(-4, 4));
               if (Conejos[i].Dir.X == 0 && Conejos[i].Dir.Y == 0)
               {
                   Conejos[i].Dir.X = rand.Next(-4, 4);
                   Conejos[i].Dir.Y = 1;
               }
           }
       }

       public void RenderScene()
       {
           this.back.DrawBox(0, 0, 800, 600);
           for (int i = 0; i < Conejos.GetLength(0); i++)
           {
               Conejos[i].Draw(this.back, this.picture);
           }
           this.front.Flip(back, FlipFlags.NoVSync);
           FPS.CalculateFPS();
       }

       private void Form1_FormClosed(object sender, FormClosedEventArgs e)
       {
           this.device.RestoreDisplayMode();
           string str = "FPS: " + FPS.FPS + " - MAX: " + FPS.MaxFPS;
           MessageBox.Show(str);
       }
   }
}


el codigo puede estar guapo verlo por que las directdraw vienen muy mal documentadas ya que tan obsoletas y lo quitaran en cuestion de poco

saludos

TheAzazel

 Ponme el ejecutable que me lo descargue.. asi ya queda todo la mar de completo, test de todo tipo y colores... ale, q los conejos lokos se van a hacer famosos al final :).

Asi podre comprobar cuanta sobrecarga tiene SDL cuando usa DDraw :)

BeRSeRKeR

 Bueno ahí va mi prueba:

· Intel® Pentium® 4 CPU 3.00GHz 4 CPU 3.00GHz (x86 Family 15 Model 2 Stepping 9)
· CPU Speed: 2992 Mhz
· System memory total/available: 1021Mb / 461Mb
· ATI Technologies Inc. - RADEON 9600 XT x86/SSE2 - 2.0.5079 WinXP Release
· Screen resolution 800x600x32bits

Test de TheAzazel:



Test de zupervaca, 214 fps, es decir, ~40 fps de diferencia con respecto a OpenGL.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

TheAzazel

Cita de: "Pogacha"En realidad la diferrencia entre OpenGL y DirectX no importaria para maquinas nuevas si lo que quieres hacer es 2D ... yo me centraria en buscar maquinas viejas con placas de video viejas (4 a 32 mb) sin PS ni nada de eso ahí, si podes comparar DDraw y OpenGL.

Saludos
Por lo que he observado en los test...las ATI (la mas antigua probada es la 7500) mueve con opengl todo bastante bien, mas rapido que con ddraw. Todas las demas ATI de modelo superior no hay duda, opengl rulez!

con nvidia la cosa es un poco distinta, la mas antigua probada esa una geforce2mx y es mas rapido el ddraw PERO sin soporte alpha por hardware.

a ver si hay posteos de maquinas mas antiguas.... no habia por hay una pagina donde, los del halflife2, tenian un muestreo de las tarjetas mas disponibles hoy en dia??  

zupervaca

 bueno lo he subido

test de directdraw: http://www.davidib.com/test/testdirectdraw.rar
test de direct3d: http://www.davidib.com/test/testdirectx.rar

disfrutarlos  :lol:

recordar si quereis que rulen ir a mi pagina y en la primera noticia podeis descargaros los redistribuibles de las directx managed y del framework

editado: se me olvidaba para salir del test de directdraw pulsar alt+f4 y luego se ven los fps

TheAzazel

 Señor zupervaca...tengo un problema...como veo los fps del test de ddraw? no me deja pasar a modo ventana? (ddraw por hardware solo se permite en fullscreen, asike al pasar a ventana casca...).
Lo puedes compilar(me cago en to, no tener el visualc# pa probar...) que vuelque la salida a un fichero o algo? o dime como lo has visto tu... mientras voy a intentar con el fraps a ver..

PD: jeje, ya he leido tu edit jeje, ya veo los frames ;)

TheAzazel

 
Cita de: "TheAzazel"uhmm...
acabo de probar el ultimo test de zupervaca(1000 conejos con d3d) y me he llevado una sopresa. Mi equipo es el XP3000 con una 9700Pro:

Todos a 800x600x32 con doublebuffer activado.

Direct3d: 261fps modo window
Direct3d: 310fps modo fullscreen(picos, no se si son mantenidos..., no veo el titulo de la ventana jeje)

Opengl: 263fps modo window
Opengl: 290fps modo fullscreen

Luego en mi equipo van parejos!!.

A ver si alguien mas se anima y prueba el test de zupervaca tambien para comparar y asi averiguamos porque el tiene esa diferencia tan grande entre d3d y opengl...sera la geforce6800??

El valor que teneis que comparar de glSDL-Bench contra el de zupervaca esta en la esquina inferior derecha de la tabla, el modo opengl+fullscreen+double buffer.

enga, postear resultados!!
Añado el anterior para que continue... y actualizo datos:

Direct3d: 261fps modo window (test zupervaca)
Direct3d: 310fps modo fullscreen(picos, no se si son mantenidos..., no veo el titulo de la ventana jeje) (test zupervaca)

SDL usando Opengl: 263fps modo window (glSDL-Bench)
SDL usando Opengl: 290fps modo fullscreen (glSDL-Bench)
SDL usando DirectDraw:  115fps modo fullscreen (glSDL-Bench)
DirectDraw:  111fps modo fullscreen (test zupervaca)

Parece que todo eso de .net y demas historias tiene mas sobrecarga para Ddraw que SDL :P

Con el test de BeRSeRKeR se ve que Direct3D puro Vs SDL usando OpenGL le puede sacar a veces un 20% je. De que dependera q a mi me vayan tan parejos??
enga, si alguien ha seguido todo el thread q postee toda la bateria de pruebas a ver... jeje

zupervaca

 ya lo he subido de nuevo, ahora lo guarda en un archivo al lado del exe

4 fps no es sobrecarga  ;)  

TheAzazel

Cita de: "zupervaca"ya lo he subido de nuevo, ahora lo guarda en un archivo al lado del exe

4 fps no es sobrecarga  ;)
ya jejeje, pero en relacion a sdl se conoce q mas "sobrecarga" si tiene... aunq da igual, ddraw ya apenas se usa y en opengl/d3d parece q tiene mas sobrecarga SDL que .net jeje.
Nos faltaria probar en OpenGl puro, si alguno tiene ese codigo por ahi... ya sabe, esta tardando :P

zupervaca, a ver si alguien mas postea todos los test jeje

si cierro los ojos, veo conejos jeje O_O  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.