Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

De hecho, en cualquier procesador de 32 bits es más eficiente un contador Integer que Byte. A no ser que se trate de una aplicación cuyo uso de memoria sea un factor ultra súper crítico, dudo mucho que valga la pena "ahorrar" tres bytes a cambio de darle más trabajo al procesador, además de volver más lento el código.

En cuanto a lo del tamaño del programa, haz una prueba y dinos cuántos bytes adicionales toma el ejecutable al usar LeftStr en lugar de Copy. En muchos casos la diferencia es 0 (sobre todo si se trata de una aplicación que incluye formularios).

Cabe recordar que el compilador NO incluye todas las funciones de una unidad referida a través de un Uses, sólo las que el programa utilice (algo que hace todo buen compilador, Delphi no es Cuic Basic ).

Un abrazo.

Al.
Responder Con Cita
  #2  
Antiguo 03-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Desconocía el dato acerca de byte-integer, pero tengo comprobado que mi Delphi 3 genera ejecutables del mismo tamaño (variación en pocos bytes) si utilizo sólo IntToStr y StrToInt de SysUtils, que si utilizo muchas funciones más. Ahora, si la quito, me ahorro 50KBs. Es más, la pongo, sin usar nada de ella, y al quitarla, ¡me ahorro 50KBs!

Por supuesto, no estoy hablando de aplicaciones con formularios (si ahí me pudiera ahorrar Graphics )
Responder Con Cita
  #3  
Antiguo 03-03-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por ixMike Ver Mensaje
...SysUtils...si la quito, me ahorro 50KBs. Es más, la pongo, sin usar nada de ella, y al quitarla, ¡me ahorro 50KBs!...
Habría que revisar a detalle el programa y los fuentes de Delphi 3 (hace como siete años que no lo uso), pero muy probablemente se debe a que la unidad SysUtils lleva a cabo código de inicialización, en la SysUtils.pas de Delphi 7 dicho código es:

Código Delphi [-]
initialization
  if ModuleIsCpp then HexDisplayPrefix := '0x';
  InitExceptions;

{$IFDEF LINUX}
  SafeCallErrorProc := @SafeCallError;
  ExitProcessProc := PropagateSignals;

  CheckLocale;
{$ENDIF}

{$IFDEF MSWINDOWS}
  InitPlatformId;
  InitDriveSpacePtr;
{$ENDIF}
  GetFormatSettings; { Win implementation uses platform id }

Debe considerarse que siempre será compilado el código de inicialización que tengan todas las unidades referidas a través de cláusulas Uses.

Saludos.

Al.
Responder Con Cita
  #4  
Antiguo 03-03-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Cabe recordar que el compilador NO incluye todas las funciones de una unidad referida a través de un Uses, sólo las que el programa utilice (algo que hace todo buen compilador, Delphi no es Cuic Basic ).

Un abrazo.

Al.
Algo de eso había leido en algún lado, no recuerdo bien si fue en la Cara Oculta o si fue algún comentario en los foros, muy posiblemente tuyo.

Si tengo un vago recuerdo de que mientras tengamos units en el uses el compilador las "explora"... ¿a eso te refieres cuando dices esto?:

Cita:
Empezado por Al González Ver Mensaje
Habría que revisar a detalle el programa y los fuentes de Delphi 3 (hace como siete años que no lo uso), pero muy probablemente se debe a que la unidad SysUtils lleva a cabo código de inicialización, en la SysUtils.pas de Delphi 7 dicho código es:

Código Delphi [-]initialization if ModuleIsCpp then HexDisplayPrefix := '0x';
InitExceptions;

{$IFDEF LINUX} SafeCallErrorProc := @SafeCallError; ExitProcessProc := PropagateSignals; CheckLocale; {$ENDIF} {$IFDEF MSWINDOWS} InitPlatformId; InitDriveSpacePtr; {$ENDIF} GetFormatSettings; { Win implementation uses platform id }


Debe considerarse que siempre será compilado el código de inicialización que tengan todas las unidades referidas a través de cláusulas Uses.

Saludos.

Al.
Pero, si no me falla la memoria, el compilador sólo lo hace sobre aquellas units que han sido cambiadas. Esto es el comportamiento por defecto y es el que se realiza mientras uno Compile. Tengo entendido que si uno realiza Build obliga a recompilar todo.

¿Esto es así?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 03-03-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

Cita:
Empezado por Delphius Ver Mensaje
Algo de eso había leido en algún lado, no recuerdo bien si fue en la Cara Oculta o si fue algún comentario en los foros, muy posiblemente tuyo.

Si tengo un vago recuerdo de que mientras tengamos units en el uses el compilador las "explora"... ¿a eso te refieres...
Es tan sencillo como que función referida en el código -> función metida al .exe como parte del código máquina. Función no referida -> función no tocada. Igual pasa con las variables, constantes y otros elementos; al no ser usados en ningún lado del programa, el compilador no los incluye en el .exe. Pero con "referido" quiero dar a entender el que haya un claro uso del elemento en cuestión desde algún punto del árbol de llamadas y referencias cuya raíz es el "main" ("Program") de la aplicación.

Cita:
Empezado por Delphius Ver Mensaje
...Pero, si no me falla la memoria, el compilador sólo lo hace sobre aquellas units que han sido cambiadas. Esto es el comportamiento por defecto y es el que se realiza mientras uno Compile. Tengo entendido que si uno realiza Build obliga a recompilar todo...
Es correcto lo que dices, pero creo que no se interpretó bien lo que dije.

Al decir que "siempre será compilado el código de inicialización que tengan todas las unidades referidas a través de cláusulas Uses", no me refiero al análisis y validación sintácticos que hace el compilador sobre el código fuente, sino a la "integración" de dicho código en su versión ejecutable dentro del programa resultante. Cuando la unidad .pas no ha sido modificada desde su última compilación, el código se tomará directamente del archivo .dcu correspondiente. De hecho el compilador no necesita los .pas para generar un .exe, mientras existan las unidades compiladas .dcu. Es de éstas de dónde siempre toma lo necesario para crear el programa ejecutable.

Espero no haber confundido más.

Saludos.

Al.

Última edición por Al González fecha: 03-03-2008 a las 05:39:31.
Responder Con Cita
  #6  
Antiguo 03-03-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Espero no haber confundido más.
Todo lo contrario amigo. Traes Luz a este tonto (yo) para que sepa por donde mirar.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
funciones string gallipi Varios 3 29-01-2008 17:26:29
Funciones String thomasini OOP 3 27-09-2006 14:53:45
Problemas con funciones de manejo de string destrukthor Varios 7 11-07-2006 16:39:29
Información sobre funciones string JavierO Varios 2 11-10-2005 19:34:02
Funciones de String Joacko Varios 0 01-12-2004 19:54:49


La franja horaria es GMT +2. Ahora son las 04:22:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi