Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SheKeL_C$ en 5 Marzo 2016, 05:05 am



Título: Assambler o C/C++ ??
Publicado por: SheKeL_C$ en 5 Marzo 2016, 05:05 am
Cual de estos dos lenguajes es el mas rapido??

Teniendo conocimientos medios de c y de asm, entiendo que el compilador de c prepara un codigo mas eficiente que si tu mismo escribes en asm, a menos que sepas bastante de ensamblador lo cual haria a este mejor.

Mi duda es que quiero hacer algo "maligno" y me gustaria decantarme por el lenguaje que voy a usar, me desenvuelvo mejor en ensamblador (masm32) que en c (hace años que no miro nada)


Título: Re: Assambler o C/C++ ??
Publicado por: xiruko en 5 Marzo 2016, 05:57 am
Yo creo que hoy en día y por norma general, usar ASM en lugar de C es tener ganas de complicarse la vida a lo tonto. Además, como bien dices el compilador de C probablemente haga un código más optimizado que el que crees tú en ASM, a no ser que seas muy crack en ensamblador.

El único lugar donde quizás veo justificado el uso de ASM frente a C, y sin contar el desarrollo de compiladores, es en sistemas embebidos, por el tema de que los recursos disponibles son más escasos y puede ser que haya que optimizar ciertas rutinas problemáticas.

Saludos!


Título: Re: Assambler o C/C++ ??
Publicado por: ivancea96 en 5 Marzo 2016, 15:10 pm
Si tienes la capacidad y paciencia de estructurar un programa completo en ASM mejor que en C, hazlo.
Si buscas mayor portabilidad, C.
Si buscas código más estructurado, probablemente C.


La mejor opción en tu caso, puede ser hacer funcionalidades en ASM, con inline assemby quizás, o compilando funciones en ASM y usándolas en C.

En cualquier caso, C es un lenguaje de bajo nivel, cuasi comparable a ASM.


Título: Re: Assambler o C/C++ ??
Publicado por: Orubatosu en 5 Marzo 2016, 16:21 pm
Tienes una "tercera opción"

En C o C++ puedes especificarle al compilador el tipo concreto de CPU en muchos casos. No estás limitado a compilar en X86 o X64, sino que puedes decirle al compilador que optimice para una arquitectura concreta.

En el "mundo real" el ASM en "programación general" se limita a rutinas muy concretas donde una diferencia muy pequeña de rendimiento, al iterarse muchas veces puede marcar una diferencia. Esos casos son muy pocos y concretos.

Por ponerte un ejemplo, a nadie "en su sano juicio" se le ocurre programar un procesador de texto en ensamblador. La diferencia de velocidad es completamente inapreciable para el ser humano.

Otro tema serían aspectos concretos de un motor 3D, donde si que habría alguna por ponerte un ejemplo