¿Por qué querrías usar C# si es más lento que C++? [closed]

10 minutos de lectura

avatar de usuario
gordon gustafson

Estoy buscando un nuevo lenguaje para aprender después de C++ y Java. Iba a probar C#, pero mucha gente dice que es muy lento porque es un lenguaje de alto nivel. Entonces, ¿por qué alguien usaría C#? ¿No es C++ mucho más rápido? ¿Facilita el desarrollo, pero solo tiene un producto final más lento?

Además, ¿para qué se puede usar C#? Lo usa con muchas cosas de .NET en Windows y con ASP.NET, pero ¿cuáles son otras situaciones en las que uno usaría C#? ¿Habrá muchas oportunidades de trabajo para ello?

  • No estoy de acuerdo con el cierre “descaradamente ofensivo”. No es ofensivo cuestionar algo que han escuchado. No encuentro fallas en la pregunta. +1 de mí (y un voto para reabrir), por preguntar cuál es realmente una pregunta sensata.

    – Marc Gravell

    24 de abril de 2009 a las 20:15

  • No creo que me haya ofendido suficientemente esta pregunta.

    – spulson

    24 de abril de 2009 a las 20:15

  • Voté para cerrar como S&A. La pregunta asume la respuesta a otra pregunta: “¿Es lento C#”. Es como preguntar si todavía le pegas a tu esposa.

    – Jon B.

    24 de abril de 2009 a las 20:16

  • ¿Por qué se cerró esto? Esta es una pregunta que mucha gente busca y la comunidad de stackoverflow tiene muchas respuestas inteligentes sobre por qué usaría C# en lugar de C++. Personalmente, pasé horas buscando puntos de referencia de C++ y .NET y me habría beneficiado de las respuestas dadas.

    – Dave L.

    24 de abril de 2009 a las 20:17

  • @CrazyJugglerDrummer, no te preocupes por eso, no creo que hayas molestado a nadie realmente. De hecho, somos un grupo bastante amistoso, así que no te pongas a la defensiva. Solo que a veces tenemos un poco de gatillo fácil ;-p Bienvenido a StackOverflow; Espero que lo encuentres educativo y útil.

    – Marc Gravell

    24 de abril de 2009 a las 20:20

¿Quién es exactamente este “grupo de personas”? ¿Con qué lo están comparando?

Para la gran mayoría de las cosas, C++ es no “mucho más rápido” que C#. Ciertamente tiene beneficios en varias situaciones, particularmente donde desea un manejo de memoria más determinista, pero en mi experiencia, el cuello de botella en la mayoría de las aplicaciones no se encuentra en lugares donde C++ ayudaría. Como dice spoulson, gran parte del rendimiento está en el diseño en lugar de la implementación exacta, y ahí ayuda poder probar diferentes diseños fácilmente.

¿Por qué usaríamos C# cuando es un un poco más lento que C++? Porque generalmente se considera (es decir, algunos no están de acuerdo 🙂 que es mucho más fácil de desarrollar sin pegarse un tiro en el pie.

En cuanto a para qué se puede usar C#… ¿qué desear para usarlo? A menos que desee desarrollar controladores y núcleos, puede estar bien para usted. (Incluso el desarrollo del sistema operativo tiene algunas personas que usan C#…)

¿Oportunidades de trabajo? Cargas.

¿Desventajas? Bueno, .NET en sí solo está disponible en las plataformas de Microsoft. hay Mononucleosis infecciosapero no tiene el mismo grado de portabilidad que Java (sin duda, otro lenguaje “lento” según el mismo grupo de personas).

  • También he leído algunos casos en los que C# puede superar a C++ en velocidad de cálculo debido a las optimizaciones de tiempo de ejecución realizadas por .NET.

    – Will Eddins

    24 de abril de 2009 a las 20:19

  • Debe agregar seguridad a esta lista, los desbordamientos de búfer son el mayor riesgo, así es como las cajas de Mac/Linux y Windows se ven comprometidas… las cadenas inmutables son una gran cosa

    – Amenaza SQL

    24 de abril de 2009 a las 20:21

  • No estoy seguro de que a Jon Skeet se le deba permitir publicar más, está acaparando a todos los representantes (buena respuesta, por cierto)

    – Greg B.

    24 de abril de 2009 a las 20:59

  • @Hi-Angel: parece que estaba tratando de transferir el código C++ muy directamente a C#. Esa es una mala idea: son idiomas diferentes, con modismos diferentes. Del mismo modo, si intentara portar un programa C# directamente a C++, encontraría todo tipo de cosas que faltan o son diferentes. Eso no dice nada sobre la utilidad de C++ o C#, solo dice que tratar de usar los modismos de un idioma en otro es una mala idea.

    – Jon Skeet

    25 de diciembre de 2014 a las 11:02

  • @Hi-Angel: Pero en C# idiomático, no recuerdo la última vez que querido para obtener el tamaño de una estructura. Para fines de serialización, hay todo tipo de otras formas de hacer las cosas. Si solo está descargando los bytes sin formato en C ++, personalmente no lo haría de todos modos, ya que es bastante frágil frente a la ejecución en una arquitectura diferente, etc. Usaría algo como Protocol Buffers para los objetos de datos, o serialización explícita “a mano”. Básicamente, hay muchas soluciones para la serialización que no requieren conocer el tamaño de la estructura.

    – Jon Skeet

    25 de diciembre de 2014 a las 11:16


El código escrito en ensamblador puede ser increíblemente rápido. ¿Por qué no simplemente escribir en ensamblador?

No creas todo lo que escuchas. C# ha sido bastante rápido para todos mis proyectos. Por lo general, el rendimiento es más un factor de diseño que el rendimiento de la plataforma en bruto.

  • ¡De ninguna manera, eso es demasiado lento! ¡Construye todo en hardware! 😉

    – JP Alioto

    24 de abril de 2009 a las 20:12

  • no hombre, las tarjetas perforadas son el camino del futuro 🙂

    – Amenaza SQL

    24 de abril de 2009 a las 20:18

  • Además, hago toda mi computación en máquinas Rube Goldberg.

    – spulson

    24 de abril de 2009 a las 20:19

  • Escribo todo en F # y se compila de forma adecuada para FPGA paralelos, por lo que esencialmente está integrado en hardware 🙂 (es una broma, no hago eso)

    – mmx

    24 de abril de 2009 a las 20:25

  • Cuando vi la publicación inicial, tu respuesta es casi textual lo que pensé en mi cabeza. Todo tiene una compensación aquí y allá, y la velocidad no siempre es 100% importante. Si tiene dos autos en los que uno alcanza un máximo de 220 mph y el otro alcanza un máximo de 200 mph… realmente no hay problema allí. Seguro que uno es más lento, pero no por mucho. Mientras tanto, el automóvil de 200 mph es más fácil de conducir, está más disponible y cuesta menos que el otro. ¿Cuánto vale realmente la compensación? Bueno, eso depende de lo que necesites.

    –Matt Kenefick

    18 de abril de 2017 a las 18:27


Tendría que decir que las personas con las que estabas hablando simplemente no saben de lo que están hablando. Llano y simple.

Muchas aplicaciones de nivel empresarial están construidas sobre C# y otros lenguajes .Net. No hay nada inherentemente lento en ellos. sí el tender tener tiempos de inicio más lentos, pero eso es más o menos donde termina.

Noté que mencionaste Java en la lista de idiomas. Si se siente cómodo con la velocidad de Java, C# no presentará ningún problema. En términos generales, C# funciona al menos tan bien como Java en muchos tipos diferentes de puntos de referencia.

Mi última empresa fue fundada por 5 veteranos de C++ con más de 15 años de experiencia cada uno. Pasaron más de un mes construyendo un determinado servicio de Windows. Uno de ellos encontró e incursionó en C#. En una semana había llegado más lejos que el colectivo en su mes. Poco después, todos cambiaron a C#.

¿Por qué C# si puede funcionar más lento? ¿Qué precio le pone a ese grado de desarrollo rápido?

¿Por qué debería ser lento? De hecho, C# está compilado en ‘Lenguaje intermedio’, que se aplica JIT en el tiempo de ejecución, pero esto puede brindarle una ventaja de rendimiento, ya que el tiempo de ejecución puede generar el código más optimizado para la plataforma en la que se ejecuta…

Dependiendo de la aplicación que desee escribir, la ‘velocidad’ del idioma tendrá un impacto menor. El rendimiento de su aplicación estará determinado principalmente por la forma en que diseñe su aplicación, si hace un buen uso de las herramientas/tecnologías que utiliza, etc. Claro, C# no es una bala de plata, y hay proyectos donde no debería No lo usaré, simplemente porque no es la herramienta adecuada para el trabajo, pero funcionará bien para la mayoría de las aplicaciones comerciales/empresariales.

  • Le dará tiempo de desarrollo y ventaja de depuración. Pero no le dará ninguna ventaja de rendimiento sobre C/C++.

    – rxantos

    31 de octubre de 2017 a las 2:35

avatar de usuario
Rastreador1

No he encontrado muchos casos en los que C# no sea una buena elección de lenguajes y .Net (o Mono) no sea una plataforma decente. Las excepciones notables son el desarrollo a nivel de kernel o los controladores. Hay muchas áreas donde se necesita un bajo nivel y un rendimiento en bruto. Para la mayoría, si no para todas las aplicaciones comerciales o empresariales, C# es una de las mejores opciones para el desarrollo. Está bien respaldado, funciona con muchos otros sistemas, bibliotecas, canales de comunicación y componentes ya disponibles, sin mencionar que es un lenguaje bastante bueno (especialmente 3.5) para trabajar.

ASP.Net no era una mala plataforma, generalmente encuentro que la pila de objeto/control es una de las deficiencias de las interacciones complejas. Creo que ASP.Net MVC encaja mejor para aplicaciones web más escalables. De todos modos, es mejor que muchos otros sistemas con los que he trabajado en el pasado.

En términos de capas de servicio, e incluso desarrollo de GUI, es bastante bueno. Tengo mucha más experiencia en aplicaciones basadas en web y capas de servicios/comunicaciones/negocios que con aplicaciones GUI de escritorio, por lo que no puedo comentar mucho al respecto. Siento que gran parte del desarrollo de GUI tiene más que ver con el IDE/Toolkit que con el lenguaje en particular.

En cuanto a la lentitud, enumera específicamente Java, en la mayoría de los casos, C # / .Net es tan rápido o más rápido que Java. En mi humilde opinión, el desarrollo es específicamente más fluido con C# (Visual Studio) sobre Java (Eclipse). Para aplicaciones basadas en web, prefiero ASP.Net MVC (e incluso ASP.Net) sobre Swing. Aunque soy solo yo.

  • Le dará tiempo de desarrollo y ventaja de depuración. Pero no le dará ninguna ventaja de rendimiento sobre C/C++.

    – rxantos

    31 de octubre de 2017 a las 2:35

Las personas con las que hablaste no saben de lo que están hablando. C# es un lenguaje muy similar a Java, en total; tiene la mayoría de los mismos beneficios y desventajas. La forma en que funciona es bastante similar (Java/C# se compila en un lenguaje/código de bytes intermedio que se interpreta o JIT se compila en código nativo, con varias optimizaciones similares de las que no debe preocuparse como programador). Se usa en muchas de las mismas situaciones que Java, y realmente está dirigido al mismo mercado. Se está moviendo mucho más rápido y aportando mucha innovación como lenguaje, pero (en la práctica) es prácticamente solo para Windows, si eso le preocupa. El mercado laboral es similar. Ambos son idiomas muy populares.

En cuanto a un idioma para aprender, sugeriría algo DIFERENTE. Dices que sabes C++ y Java; C# no debería ser difícil de aprender. Los posibles empleadores lo sabrán. Prueba Scala o Python. Ambos le darán nuevas perspectivas sobre las cosas (C# no tanto) y lo convertirán en un mejor programador al enseñarle nuevas formas de pensar, en lugar de simplemente agregar otra herramienta a su caja.

¿Ha sido útil esta solución?