![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Pues no sabría decirte, lo máximo que he hecho entre C y Delphi es precisamente lo que te comento arriba. Un compañero hacía algunas rutinas en C y yo las usaba desde Delphi
__________________
Si no tienes algo que decir más importante que el silencio, cállate |
|
#2
|
|||
|
|||
|
ok, lo probaré. Gracias.
|
|
#3
|
|||
|
|||
|
No entiendo que para hacer un algoritmo mas eficiente tengas que programarlo en C, delphi no es un lenguaje interpretado como VB o Fox, de modo que como normal general es tan rapido como el codigo en C.
Si algun algoritmo te sale mucho mas rapido hecho en C , normalmente no sera por el lenguaje en si sino porque el codigo fuente hecho en delphi no esta suficientemente optimizado (delphi permite acceder directamente a memoria y trabajar con punteros como en C con lo que se puede hacer exactamente lo mismo y con la misma eficiencia). En definitiva me da la impresion de que estas complicando el tema utilizando otro lenguaje cuando puedes hacerlo todo en delphi sin perder velocidad. Saludos PD: Incluso en caso que se necesite una superoptimizacion puedes incluir tu propio codigo ensamblador directamente dentro del codigo fuente de delphi. |
|
#4
|
||||
|
||||
|
En teoría la eficiencia del código máquina que genera el compilador no depende del lenguaje, sinó de la calidad del compilador. Seguramente hay por ahí compiladores de C muy buenos y más optimizados que Delphi pero seguro que también los hay peores. Por otra parte, a menos que necesites hacer muchas "virguerías" dudo que notes mucho la diferencia, ni que te compense "complicarte la vida".
Sólo una opinión ![]() Saludos! |
|
#5
|
|||
|
|||
|
Bueno, ahí va mi respuesta. A lo mejor me expresé mal. No creo que un programa sea más eficiente si se ecribe en C, el concepto de eficiencia no esta ligado al lenguaje, sino intrínsicamente al algoritmo en question. A la hora de dissenyar un programa o un proyecto, uno debe plantearse como se va a estrucuturar, y entre varias cosas se debe elegir el lenguaje de programación. Con C un algoritmo es igual de eficiente que en cualquier otro lenguaje, lo que pasa es que en C, entre otras cosas, no hay control de memoria, no hay control de excepciones, ... todo esto favorece que al mismo tiempo que se está ejecutando un programa, se estén ejecutando a la vez diversas tareas ligadas al lenguaje. Por tanto, en C lo que se ejecuta es el programa pelao. Hay muchas más cosas que hacen preferible utilizar C que cualquier otro lenguaje, pero creo que con estas ya os convenceré de que utiliceis C, incluse para programar interficies gráficas. Ahhhh y con C podeis hacerlo TODO!!! y no tiene porque ser más complicado utilizar C que Delphi, al contrario, creo que con C puedes llegar a conceptos informaticos muy sutiles que con otros lenguajes, ni de coña, y de forma muy sencilla.
Bueno espero respuestas. |
|
#6
|
|||
|
|||
|
Un programa en delphi se ejecuta "tan pelado" como un programa en C, la lista de razones que das no tienen ningun fundamento técnico, los programas no estan "haciendo otras tareas" están haciendo exactamente lo que tu le digas.
Ejemplo muy simple de implementacion de la funcion strlen en C y en Delphi: Código:
- Strlen en delphi ------------------------------------------------------------------------------
function strlen_ex(p:PChar):integer;
var
pp:PChar;
begin
pp:= p;
while pp^<>#0 do Inc(pp);
Result:= pp-p;
end;
-Strlen en C --------------------------------------------------------------------------------
int strlen_ex(char *p)
{
char *pp= p;
while(*pp) pp++;
return pp-p;
}
-- Delphi, resultado de la compilacion en ensamblador ----------------
strlen_ex:
mov edx, eax
jmp .L2
.L1:
inc edx
.L2:
cmp byte[edx], 00
jne .L1
sub edx, eax
mov eax, edx
ret
---- C resultado de la compilacion (usando GCC 3 optimizacion O3) -------------
strlen_ex:
push ebp
mov ebp,esp
mov edx,[ebp+8]
mov eax,edx
cmp byte [edx],0
je .L2
.L1:
inc eax
cmp byte [eax], 00
jne .L1
.L2:
sub eax, edx
pop ebp
ret
---------------------------------------------------------------------------------------------
En el ensamblador generado por delphi no hay ninguna instruccion por el medio que no tenga relacion con el algoritmo que se le ha dicho que ejecute, y que podria hacer pensar que el delphi se dedica a "otras tareas" además de lo que se le ha dicho que haga. En este caso particular el resultado conseguido por delphi es un poco mas rapido y mas pequeño que el resultado de la compilacion con el GCC 3, debido a que el delphi ha optimizado la funcion de tal modo que no usa la pila para pasar el parametro, usa directamente el registro eax del procesador, en cambio la version del gcc usa la pila. Pero la diferencia de velocidad es minima. Puedes probar otros algoritmos y comparar los codigos en ensamblador: Puede que en un determinado algoritmo gane delphi y en otro gane el compilador de C, pero en general las variaciones seran mínimas. La mayoria de razones que das para considerar que C es mas rapido y se puede hacer mas cosas son "mitos" sin ningun fundamento tecnico. Si se usa mucho C es por cuestiones historicas, y porque es un estandard que esta muy extendido entre todas las plataformas hardware, de modo que cualquier programa en C, tomando las precauciones de compatibilidad adecuadas, se puede recompilar facilmente en muchas plataformas. Saludos Miguel |
|
#7
|
|||
|
|||
|
No se, ahora no tengo mucho tiempo para contestarte, pero creo que te equivocas cuando crees que se ejecuta el programa pelado en Delphi. Tomemos como ejemplo el caso del control de exepciones, debe haber una "tarea" y con eso no estoy diciendo ni un thread ni otro proceso a parte, sino, supongo que debe ser codigo añadido para que efectue este control.. No se, la verdad que es que con C puedes llegar a las entreñas de tu ordenador, y otras muchas cosas más, entre otras, puedes efectuar cualquier tipo de programación, ya sea concurrente (tan solo compartiendo codigo, cosa que con Delphi NO!!!), programación de TIEMPO REAL, ... Dudo que con Delphi puedas sacarle tanto partido a tu PC como en C, la verdad. Bueno se me acaba el tiempo y deseo que no provoquemos ahora una disjunción de los lenguajes, como se ha comprobado, C y Delphi pueden coexistir para mejorar programas o cualquier otra cosa, da igual. Gracias y que vaya bien.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|