Pregunta

construyo sitios web con bases de datos. Anteriormente he utilizado Perl o PHP con MySQL.

Ahora estoy empezando un gran proyecto nuevo, y quiero hacerlo en la forma en que se traducirá en la más sensible posible sitio .

He visto varias páginas aquí donde las preguntas acerca de cómo optimizar PHP son criticados con varias versiones de "no vale la pena ir a grandes esfuerzos para optimizar PHP, ya que es un lenguaje interpretado y que no hará mucha diferencia".

También he escuchado varias discusiones (especiallon en el podcast SO) acerca de los beneficios de la vs. compilado interpretarse idiomas , y parece como si fuera a estar en mis intereses usar un lenguaje compilado a servir hasta el sitio en lugar de un lenguaje interpretado.

¿Es esto posible en un contexto web? Si es así, lo que sería una elección de idioma razonable?

Además de acelerar un beneficio preveo es la posibilidad de encontrar errores en tiempo de compilación en lugar de tener que depurar el sitio web. Es esto razonable esperar?

¿Fue útil?

Solución

Lo que puede hacer es lo que hacen los múltiples sitios web de alto tráfico (como Facebook o Twitter), también conocido como escribir su "consumo de CPU" algoritmo en un C-plugin.

Por ejemplo, podría escribir una extensión de PHP rel="noreferrer"> si va a usar PHP, o una Rubí extensión si va a utilizar Rubí / Ruby on Rails, etc.

De esta manera, usted puede mantener su código de línea de corriente simple y fácil de mantener (que podría ser la forma más difícil de manejar petición de C en lugar de a partir de PHP), mientras que tiene un núcleo de fondo fuerte y sólido (porque está compilado, y el compilador usted cuáles son los problemas en tiempo de compilación) dice

Otros consejos

Si se va a construir un nuevo idioma ... y llegó con toda la semántica y fue completa, y que tenían alguna caja mágica que tenía un interruptor entre hacer frente al lenguaje compilado interpretada, la versión compilada sería más rápido que la versión interpretada.

¿Por qué? Debido a que compilación trae su semántica a un nivel inferior en la máquina que significa que puede ejecutar mucho más rápido, mientras que interpretar significa la semántica de la lengua serán traducidos por algunos lo (es decir, el intérprete) cuando el usuario utiliza realmente su sitio.

Una vez dicho esto ... eso no significa necesariamente que su sitio va a 100% de ejecución más rápido en un lenguaje compilado vs un lenguaje interpretado. Hay intérpretes por ahí que son muy rápido hoy en día para varios idiomas (es decir, PHP), y hay incluso para los optimizadores de lenguajes interpretados que los hacen más rápido, incluso todavía.

Hay muchas otras cosas que van en el rendimiento de su sitio que son agnósticos del idioma que elija. configuración del hardware, configuración de base de datos, la topología de red, etc. Estas cosas pueden tener un mayor impacto en usted. Yo sugeriría que mide para estar seguro.

Para mí, encontrar errores en tiempo de compilación es un enorme ahorro de tiempo, por lo que tienden a preferir los lenguajes compilados que están fuertemente tipado. Me permite hacer mi trabajo más rápido, pero eso no significa que sea objetivamente la mejor opción. Algunas personas no tienen ningún problema de escribir código de tipos débiles, y en ejecución de pruebas sobre ellos para verificar su funcionalidad, lo que yo creo que funcionaría igual de bien.

En mi humilde opinión, es bastante un no-sentido escribir una aplicación web compleja usando un lenguaje compilado, ya que da beneficios no contra una serie de problemas de gestión.

Hay un montón de maneras para levantarse actuaciones y escalabilidad en un lenguaje de secuencias de comandos, tanto a nivel de lenguaje y a nivel de sistema, siendo las actuaciones menores adquieren con el tiempo disponible con un lenguaje compilado totalmente influyente.

Por otro lado me parece muy útil ser posible seguir un esquema de desarrollo y la caza de errores ágil, simplemente cambiando su código y ver los resultados.

Perl no es un lenguaje interpretado: se compila a código de bytes, por lo que pagar el precio de la interpretación sólo cuando se inicie el ejecutable perl. Así que cuando se utiliza con Apache, no use CGI, pero mod_perl.

Haga lo que haga, el tiempo de desarrollo es probablemente va a superar ampliamente el tiempo de respuesta si selecciona un idioma que no es adecuado para la programación web o no tiene buenas bibliotecas para apoyar lo que tiene que hacer. P.ej. Nunca quedaría con C o C ++. Usted no quiere una aplicación web que es rápido pero blisteringly buggy y 6 meses de retraso.

Tomcat es una forma común el uso de lenguajes compilados para desplegar páginas web, pero antes de ir demasiado lejos, considerar seriamente lo que sus cuellos de botella de velocidad serán . Hay algunas fuentes principales de desaceleración en las aplicaciones web:

  1. latencias de red
  2. medios estáticos, especialmente imágenes
  3. consultas de bases de datos
  4. código de procesamiento del lado del servidor
  5. código de procesamiento del lado del cliente

1 y 5 realmente no tiene mucho que ver con esta cuestión.

2 será relevante si se tienen muchas imágenes que varían de una página a otra. Si ese es el caso, los navegadores de los clientes no van a hacer un buen almacenamiento en caché tal trabajo, y cada página de carga tomará algún tiempo. En este caso, es muy probable que su lenguaje de servidor no se notará, debido a la sobrecarga de los medios estáticos dominará.

3 es probable que sea un factor más grande que 4 para una gran cantidad de aplicaciones. Si usted tiene muy pocos datos, pero sí una gran cantidad de procesamiento, a continuación, 4 pueden dominar, pero por lo demás, 3 dominará incluso si usted está usando un lenguaje interpretado.

La gente puede preguntar "¿Por qué optimizar php?" debido a que el 2 y 3 son a menudo más importante de todos modos. A menudo, una buena va a ser un mejor (y más fácil) de optimización.

Hay un montón de piezas que se dedica a una aplicación web. El tiempo empleado por la capa de aplicación no necesita ser grande. Para una aplicación típica, los cerdos más grande estarían en el servidor web y en la base de datos. Sustitución de PHP con un binario CGI no va a cambiar esto.

Además, mientras que las partes interpretadas de PHP pueden ser algo lento, que es sólo una pequeña parte de lo que ocurre en la ejecución de un script PHP. Todas las funciones que se proporcionan como parte del lenguaje se implementan en código nativo. Por ejemplo, cuando se llama a una función como preg_match, se llamará a cabo una biblioteca de código nativo y dejar que haga su trabajo. Esto significa que hay menos interpretación real en ese momento de lo que parece.

Puede haber algunos casos en los que el uso de un idioma diferente al de PHP podría valer la pena, pero esos son casos especiales. En general, no hay nada que ganar aquí.

La latencia de la red es, con mucho, el mayor factor determinante en este argumento. De hecho, la latencia de red es tanto de un factor que hace que las consideraciones de idioma en lugar sin importancia de un problema de rendimiento. Así que ... ir con lo que sabe. Utilizar el idioma en el que se sienta más cómodo y más productivo con y otras consideraciones pueden ser resueltos a medida que avanza. Ahora, dicho esto, siempre es divertido probar cosas nuevas y aprender nuevas cosas puede convertirse en una obsesión, por lo que si el proyecto es de carácter personal que le da la oportunidad de experimentar, así, por todos los medios .....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top