2010-07-02 9 views
8

he probado un par de fragmentos de referencia sobre Delphi como éste:¿Pasar de la configuración de depuración a la versión sin efecto en el rendimiento?

uses 
..., Diagnostics; 

procedure TForm2.Button1Click(Sender: TObject); 
var 
    i,elapsed: integer; 
    stopwatch: TStopwatch; 
    ff: textfile; 
begin 
    if FileExists('c:\bench.txt') then 
     DeleteFile('c:\bench.txt'); 

    stopwatch := TStopwatch.create; 
    stopwatch.Reset; 
    stopwatch.Start; 

    AssignFile(ff,'c:\bench.txt'); 
    Rewrite(ff); 

    for I := 1 to 999000 do 
     write(ff,'Delphi programmers are ladies men :D'); 

    CloseFile(ff); 
    stopwatch.Stop; 
    elapsed := stopwatch.ElapsedMilliseconds; 
    ShowMessage(inttostr(elapsed));  
end; 

No importa si me quedo/compila con la debug o release configuración, el resultado es de alrededor de 900. Cuando cambio de debug a release en Visual Studio (para C++ yC#) mis programas se vuelven MÁGICAMENTE más rápidos. Estoy usando Delphi 2010 y activo la configuración de lanzamiento desde el administrador del proyecto, así como desde el proyecto -> administrador de configuración e incluso proyecto -> opciones -> compilador Delphi pero sin ningún efecto ¿por qué?

Si es importante: estoy usando Windows XP, tengo 1 GB de RAM y una CPU Intel Core2.

+9

Quizás sea al revés. Cambiar a Debug en Visual Studio hace que tus programas sean mágicamente * más lentos *. Usando Delphi, no es así. :) –

+1

sí, es muy cierto, la versión de depuración de delphi se ejecuta más rápido que C++ y C# :) –

Respuesta

16
  1. ¿Has comprobado que las configuraciones son diferentes? Incluso si tienen nombres como RELEASE o DEBUG, son totalmente configurables. Incluso puede configurarlos al revés.

  2. El código que está sincronizando es principalmente relacionado con E/S. Por lo tanto, asegúrese de que las comprobaciones IO estén desactivadas en la configuración RELEASE.

  3. Delphi todavía crea un código rápido, incluso cuando se depura;)

+2

+1 para "verificar los archivos de configuración". +1 para "mayormente relacionado con E/S". +1 para "delphi crea un código rápido" ... @omair: si quiere ver la diferencia de velocidad entre la depuración y la versión, hágalo en una gama de CPU intensiva. Su código es un punto de referencia para la unidad de disco duro, debe obtener casi al mismo tiempo con CUALQUIER lenguaje de programación, de Perl a Python, del ensamblador a los archivos de Windows por lotes. –

+0

@ uwe raabe 1. cómo configurar las configuraciones? Soy nuevo en el mundo de la programación y no tengo ni idea, ¿puede apuntar a un buen tutorial en este ? 2. Corrí este código relacionado con E/S en Visualstudio para C++ y C# y los resultados fueron diferentes. 3.yep sé que Delphi es el mejor, es por eso que tiene un ejército de programadores leales :) @ cosmin prund NO los resultados fueron diferentes para otros idiomas en depuración: delphi fue el más rápido, C++ 2do y C# más lento y bajo lanzamiento : C++ más rápido, delphi 2nd y C# aún más lento –

+0

http://docwiki.embarcadero.com/RADStudio/es/Build_Configurations_Overview –

10

Además de lo que dijo Uwe, asegúrese de que un "construir" después de cambiar la configuración. Hacer una compilación simple o ejecutar la aplicación no volverá a compilar todas las unidades con la nueva configuración.

Al igual que los otros comentaristas, tampoco esperaría demasiada diferencia entre las dos configuraciones dado el punto de referencia utilizado. El cuello de botella real es la E/S y es muy probable que supere las diferencias de rendimiento entre DEBUG y RELEASE.

Finalmente, la eliminación de errores en Delphi no es mucho más lenta que las compilaciones de Release. Diablos, a veces ejecuto Outlook en el depurador la mayor parte del día (estoy desarrollando complementos de Outlook) sin notar ninguna diferencia de rendimiento perceptible.

+0

no es solo acerca de este punto de referencia, para cualquier punto de referencia que ejecute en depuración de delphi y su rendimiento sea prácticamente idéntico, en mi los puntos de referencia en su mayoría delphi es mucho más rápido que C#, pero un poco más lento que C/C++ (estoy hablando de configuración de lanzamiento aquí) –

5

Creo que es un mal caso de prueba. Todo lo que hace es escribir en un archivo, lo que significa que la mayor parte del tiempo se gasta en código de Windows, no en su código Delphi, y por lo tanto la configuración del compilador no afectará significativamente el tiempo total de ejecución

3

No hay nada en su código principal a granel:

for I := 1 to 999000 do 
    write(ff,'Delphi programmers are ladies men :D'); 

que requieren controles extenuantes. Las opciones son: comprobar

  • Rango
  • desbordamiento comprobar
  • Comprobación E/S

De los tres, sólo Comprobación E/S a aplicar, y que es probablemente el equivalente de sumar:

for I := 1 to 999000 do 
begin 
    hresult := Write(ff, 'Dephi programmers are ladies men :D'); 
    if hresult < 0 then 
     raise EIOException.Create('That''s what your mom told me, in bed.'); 
end; 

Y la CMP y JNE Las instrucciones de la CPU no son muy complicadas.Son empequeñecido escribiendo en el disco duro.

Funciona igual de rápido porque es rápido.

Cuestiones relacionadas