Depende de su definición de aceleración y del tipo de proceso en segundo plano:
Las preguntas que debe responder antes de iniciar este proceso son:
¿Cuál es el tipo de trabajo que está intentando acelerar? ¿Una tarea vinculada a la CPU o una tarea IO?
- Las tareas de IO no ganan mucho con el cambio a un lenguaje “más rápido”. Optimiza tu código IO. El uso de C o C ++ con llamadas al sistema bien pensadas podría ayudar, pero también podría darse cuenta de estas ganancias de velocidad con el uso juicioso de las bibliotecas Ruby.
- Las tareas vinculadas a la CPU son ligeramente diferentes. Para estas tareas, el lenguaje en sí puede ser un cuello de botella o una fuente de ineficiencia. Es posible que desee implementar el código utilizando C o C ++, ya que las partes más informáticas se escriben en ensamblaje (pero evite el ensamblaje tanto como pueda). Sin embargo, independientemente del idioma elegido para la implementación, asegúrese de hacer un perfil de su código para resolver los cuellos de botella. Las optimizaciones de rendimiento solo se pueden realizar una vez que conozca los puntos críticos en su código y pueda analizar cuantitativamente el impacto en el rendimiento de los cambios introducidos en él. De lo contrario, corre el riesgo de retroceder involuntariamente en el rendimiento del tiempo de ejecución debido a cambios de optimización en el código que no funcionan como se esperaba.
¿Se puede paralizar el trabajo?
- El paralelismo introducido en un lenguaje lento puede producir grandes ganancias con modificaciones de código mínimas. Explore formas de obtener ganancias en el rendimiento sin una reescritura de código explorando procesos de subprocesos múltiples o cooperativos.
- Sin embargo, tenga en cuenta que un algoritmo parcelelizado generalmente introduce gastos generales, como la sincronización y la comunicación entre procesos, que podrían hacer que las ganancias de la paralelización no valgan la pena.
¿Cuánto está dispuesto a intercambiar la productividad del desarrollador por ganancias de velocidad?
- ¿Cuáles son algunos de los mejores esquemas de color de Vim?
- ¿Cuál es la mejor solución de respaldo para usuarios novatos de Windows?
- ¿Quiénes son los mejores diseñadores de logotipos?
- Excepcionalismo estadounidense: ¿es Estados Unidos la nación más grande? ¿Por qué o por qué no?
- ¿Cuáles son los mejores productos (tanto en términos de diseño como de función) que compró / usó recientemente y recomendaría a otros? ¿Por qué?
- Por ejemplo: elegir C o C ++ probablemente hará que su código sea lo más rápido posible, pero C / C ++ es un poco más lento de desarrollar en términos de productividad para desarrolladores y tiene errores ocultos (personalmente, me encanta el lenguaje pero reconozco sus fallas ).
- En contraste, los lenguajes basados en Java o JVM son más lentos, pero le brindarán mayor seguridad contra errores ocultos (por ejemplo, desbordamientos de búfer)
- En una nota tangencial: Erlang tiene algunas funciones de intercambio en caliente y paralelismo masivo que serían bastante difíciles de implementar usando otros idiomas o que requieren bibliotecas o código específico de la plataforma, pero el desarrollo en Erlang definitivamente pone presión sobre aquellos que son nuevos en el idioma.
En resumen, elija un idioma con el que los desarrolladores se sientan cómodos y explore el dominio del problema y descubra puntos de acceso de código antes de apresurarse para optimizar. Una solución bien pensada le ahorrará mucho dolor a largo plazo.