Ver Mensaje Individual
  #4  
Antiguo 25-05-2004
santana santana is offline
No confirmado
 
Registrado: nov 2003
Posts: 1.030
Reputación: 0
santana cantidad desconocida en este momento
Hola.

Recuerdo haber tratado este tema con Jachguate en privado hace tiempo.

Cita:
Empezado por delphi.com.ar
Particularmente prefiero Delphi por su código sencillo y agradable, sabiendo que tienen prácticamente la misma potencialidad.
Permíteme.......discrepar

Para muchas cosas prefiero C++, sobre todo por la sintaxis (justo lo que muchos rechazan), que aunque a simple vista parece más complicada luego cuando llevas 10 minutos programando es más de lo mismo, pero mucho más potente en lo que a sintaxis se refiere.

Código:
   // Equivalente de StrCmp en C
long  CompararCadenas(char *c1, char *c2) {
	if (!c1 || !c2) return c2 -  c1;
	while (*c1 && *c2 && *c1 == *c2) {
		 c1++;
		c2++;
	}
	return (*c1 || *c2)?(*c1 -  *c2):0;
}
 

Código:
 
 
  // Equivalente de StrCmp en  Delphi
function comparaCadenas(c1, c2: PChar): integer;
begin
  if (c1  = nil) or (c2 = nil) then
	result := Integer(c2) - Integer(c1)
  else  begin
	while (c1^ <> #0) and (c2^ <> #0) and (c1^ = c2^) do  begin
	  Inc(c1);
	  Inc(c2);
	end;
	if (c1^ <>  #0) or (c2^ <> #0) then
	  result := Integer(c1^) -  Integer(c2^)
	else
	  result := 0;
  end;
end;
A mi me gusta más la primera que además aun se puede optimizar más, lo que pasa es que si la optimizas más en cuanto a sintaxis, no obtienes mejor resultado, en el caso de esta función obtendrías el mismo código máquina pero peor legibilidad. Y comparando la de Delphi con la de C lo que sí te puedo decir es que el código maquina resultante no difiere mucho el uno del otro.

Una vez hice unas pruebas de velocidad con una rutina que repetía 10000 veces la búsqueda de un texto en una cadena de más de 1Mb. El primer algoritmo lo hice en C tardaba unos 19 Segs., el segundo en Delphi (tardaba casi 2 segs más), luego en ensamblador embebido en Delphi hice 2 o 3 versiones y todas le sacaban más de 4 segundos a la versión de C, pero una de ellas creo que le sacaba 9 o 10 Segs. Y yo con eso y poco más me lo paso bomba y soy feliz
Responder Con Cita