El marco PHP más popular. Marcos web: una introducción para principiantes. Metodología de pruebas y banco de pruebas.

Al estudiar la personalidad de una persona, ya sea una mujer, un hombre o un niño, siempre se puede identificar una mala tendencia a comportarse indecorosamente debido, por ejemplo, a errores en la educación o a un trauma psicológico. Pero incluso la mala herencia puede protegerse. Consideremos los principales rasgos negativos del carácter humano.

Autoritarismo

El deseo de dominar en todo, ignorando las necesidades de otras personas. Una demanda explícita u oculta de sumisión y disciplina por parte de todas aquellas personas con las que una persona se cruza. No se tienen en cuenta las opiniones ajenas, se reprime cualquier desobediencia sin intentar encontrar una solución mutuamente beneficiosa. Se cree que este es un rasgo negativo típico del carácter ruso.

Agresividad

El deseo de entrar en conflicto con los demás. En la primera infancia, este es un rasgo de carácter negativo obligatorio del niño que aprende formas de proteger sus intereses. Las declaraciones provocativas, a veces deliberadamente falsas, el tono elevado y los insultos son típicos de un adulto agresivo. A veces se intenta influir físicamente en el oponente.

Juego

Un deseo doloroso de lograr un objetivo establecido, independientemente del tamaño de los riesgos, ignorando los argumentos lógicos propios y ajenos sobre el exceso del monto del gasto sobre el valor del resultado deseado. A menudo provoca situaciones que conducen a la muerte, pérdida de salud o pérdidas económicas importantes.

Codicia

Deseo patológico de beneficio material personal en cualquier situación. Obtener ganancias a cualquier costo se convierte en la única fuente emociones positivas en la vida. Al mismo tiempo, la duración de las sensaciones placenteras derivadas de los beneficios recibidos es extremadamente corta, debido al deseo constante e incontrolable de enriquecerse aún más.

Apatía

Falta de respuesta emocional a la mayoría de estímulos externos debido a un temperamento particular o a la reacción protectora del cuerpo ante el estrés. Es una de las razones de la imposibilidad de lograr incluso objetivos simples debido a la incapacidad o falta de voluntad para concentrarse y realizar esfuerzos volitivos.

Desordenado

Cumplimiento negligente de las obligaciones por falta de voluntad para actuar de acuerdo con reglas ya conocidas por todos o por falta de comprensión de los algoritmos necesarios para alcanzar de forma rápida y menos costosa los objetivos existentes. A menudo, este es un rasgo de carácter negativo típico de una mujer que acaba de escapar del cuidado excesivo de sus padres.

Indiferencia

Una falta de interés real o conscientemente demostrada en un tema, objeto, evento o responsabilidades específicas debido a una frialdad emocional innata, un estrés severo experimentado o, inculcado desde la infancia, un sentido de superioridad sobre personas con un estatus social diferente, una fe o nacionalidad diferente. , carrera.

Irresponsabilidad

Una posición elegida conscientemente, impuesta durante la educación o condicionada por la inmadurez moral, de negarse a comprender realmente las consecuencias. propias acciones, renuencia a tomar decisiones que afectan la calidad de vida propia y de los demás. En situaciones cotidianas difíciles acciones activas no se lleva a cabo debido a la expectativa de que el problema se resolverá por sí solo.

Sin rostro

La ausencia de rasgos individuales, razón por la cual un sujeto individual se "pierde" fácilmente en la masa general de personas como él. En el proceso de comunicación, el "hombre gris" no evoca simpatía debido a su fijación en temas poco interesantes en el equipo, no tiene iniciativa, es aburrido, tiene miedo de las innovaciones y se resiste de todas las formas posibles.

crueldad

Indiferencia emocional ante los problemas ajenos, incapacidad o falta de voluntad para simpatizar, simpatizar con las personas en particular y con los seres vivos en general, experimentando dolor físico o emocional. A veces se trata de una inhumanidad deliberada en acciones que provocan sufrimiento e incluso la muerte de los objetos elegidos como víctimas.

Rudeza

Violación intencional o inconsciente de normas, la secuencia de acciones adoptadas en una sociedad determinada en relación con alguna situación específica. El motivo de la arrogancia deliberada puede ser el deseo de provocar un conflicto o llamar la atención sobre sí mismo, inconsciente: errores en la educación, inmadurez emocional.

Locuacidad

Una dolorosa necesidad de participar constantemente en un diálogo con uno o más interlocutores, independientemente del contenido de la conversación, el grado de entusiasmo de los demás participantes o la relevancia de la conversación. El objetivo principal de tal interlocutor no es recibir. nueva información y el papel del narrador al contactar con alguien. Al mismo tiempo, puede difundir información que otros preferirían mantener en secreto.

viento

Incapacidad para cumplir promesas y tener en cuenta los intereses de otras personas, incapacidad para moverse durante mucho tiempo para lograr un objetivo, deseo de cambiar constantemente el círculo de amigos y socios. Falta de principios y límites de comportamiento claros, rápida desaparición del interés en una actividad o persona específica.

Ansia de poder

Un deseo apasionado de control sobre todos y la expectativa de una obediencia incondicional, el deseo de poder ilimitado, especialmente sobre los más educados y capacitados. Intoxicación con la propia posición superior en situaciones en las que otros se ven obligados a buscar ayuda o buscar protección o apoyo material.

Sugestibilidad

En forma patológica, se trata de una tendencia subconsciente a percibir un comportamiento impuesto desde fuera sin la propia comprensión consciente y sin sopesar los resultados de las acciones realizadas bajo la influencia de la autoridad de otra persona. Sin embargo, una sugestibilidad reducida puede provocar dificultades de aprendizaje.

Vulgaridad

Incapacidad para encontrar el equilibrio entre originalidad y vulgaridad en la comunicación, en la elección de ropa, pautas sociales, etc. Por ejemplo, durante un diálogo, el interlocutor habla en tono elevado, es educado y no desdeña los chistes verdes. A la hora de elegir un atuendo, prefiere las cosas llamativas y los componentes a menudo no combinan bien entre sí.

Estupidez

La incapacidad o falta de voluntad para sacar conclusiones lógicamente correctas incluso de los problemas cotidianos más simples, la tendencia a ver la pizca de sabiduría en declaraciones pseudocientíficas y populistas, la incapacidad de someter la información de fuentes que se elevan independientemente al estado de autoridad a un crítico razonable. análisis.

Orgullo

Confianza en la insignificancia social, moral y mental de los demás, la incapacidad de perdonar los errores personales y ajenos, la negación de la posibilidad de que otros sujetos de la sociedad tengan características dignas. Se desarrolla en el contexto de distorsiones en la educación, degradación de la personalidad debido a enfermedades, inmadurez del individuo, junto con un alto estatus social.

Tosquedad

Renuencia a adherirse al formato cortés de comunicación con los interlocutores aceptado en la sociedad normal debido a deformaciones de la personalidad debido a enfermedades, lesiones, estrés o la necesidad frecuente de tomar una posición defensiva cuando se invade territorio y derechos. Manifestaciones típicas: comunicación en voz alta, mala educación, lenguaje obsceno.

Avaricia, tacañería

El deseo de minimizar costes incluso a expensas de la salud, la higiene básica y el sentido común. Una búsqueda patológica de la estabilidad material puede manifestarse en forma de negarse a deshacerse de la basura, la basura e ignorar solicitudes razonables. ser amado sobre la compra de artículos esenciales.

Crueldad

El deseo de causar malestar a los seres vivos en aras de la satisfacción moral personal. El impacto en la víctima puede ser tanto intangible, en forma de insultos y negativa a satisfacer algunas necesidades emocionales importantes, como físico, al infligir dolor, tormento y usurpación de la vida.

Olvido

Incapacidad para recordar algunos datos necesarios en la vida cotidiana, una combinación de acciones para lograr un objetivo determinado, un algoritmo para iniciar o apagar un dispositivo. Ocurre debido a cambios en el cerebro relacionados con la edad y a la sobrecarga de información. Puede ser consecuencia de una situación estresante que quieres olvidar.

Adicción

El deseo de obtener placer al realizar acciones o consumir una determinada sustancia, incluso si la fuente de emociones placenteras daña la salud, las relaciones con los demás, genera grandes gastos económicos, empuja a la delincuencia debido al deseo de alcanzar un "alto", en el ausencia de acceso legal al mismo.

Envidiar

Incapacidad para disfrutar de beneficios, logros o cualidades personales. La tendencia a comparar constantemente los valores propios y ajenos. Además, las "migas" del otro lado siempre parecen más grandes, más sabrosas y más deseables que sus propios "placers". En forma patológica, priva a uno de la alegría y de la capacidad de evaluar con seriedad los méritos propios y ajenos.

Complejidad

Menospreciación constante ante los propios ojos de los propios talentos naturales, habilidades entrenadas, negación del valor de los logros personales, incapacidad para obligarse a declarar logros personales en un círculo de figuras de autoridad. Formado debido a una educación demasiado estricta, trauma psicológico o enfermedades del sistema nervioso.

tedio

La costumbre de sermonear a todo el mundo, en todas partes, discutiendo repetidamente el mismo tema, a pesar de la evidente falta de interés por él entre las personas que intentan entablar un diálogo. La razón radica en el amor patológico por la atención y las conversaciones interminables sobre cualquier tema, incluso si el instigador de la conversación es un completo profano en el tema que se está discutiendo.

Enojo

Una manifestación emocional de una fuerte insatisfacción con algo, un hito que indica la presencia de condiciones claramente incómodas para una persona. En ausencia de acciones que eliminen la causa del sentimiento, con el tiempo éste puede empujar a uno a cometer un delito, por lo que no se deben ignorar las manifestaciones de ira.

Arruinado

La mala costumbre de exigir que se cumplan tus deseos lo antes posible, sin tener en cuenta las capacidades de la persona a quien se realiza el reclamo. Negarse a controlar y restringir las propias necesidades, a tolerar el más mínimo inconveniente y a ejercer personalmente un esfuerzo emocional y físico para lograr lo que se desea.

Pereza

Falta de ganas de esforzarse por las necesidades personales, tendencia a pasar tiempo libre durante todo el día. El comportamiento revela un deseo de obtener comodidad a expensas del trabajo de otros, una profunda aversión a las actividades útiles incluso en cantidades mínimas. Al solicitar un trabajo, este rasgo de carácter negativo no debe indicarse en su currículum.

Engaño

Expresar consciente y sistemáticamente información falsa a los interlocutores con fines difamatorios, en beneficio propio o para disfrazar fallos personales en alguna actividad. La forma patológica es inherente a individuos inseguros que intentan impresionar a los demás con historias ficticias sobre sí mismos.

Hipocresía

Fingidas seguridades de amor, sincera admiración y buena voluntad hacia el interlocutor durante una conversación con él. El propósito de tal comportamiento es la congraciación y el deseo de halagar en beneficio propio, mientras se ocultan sentimientos verdaderos, tal vez incluso maliciosos, hacia el participante en el diálogo o el objeto de la conversación.

Adulación

Tendencia a elogiar en voz alta y excesivamente constantemente los méritos y virtudes reales e imaginarios de los demás, en aras del propio interés. El objeto de exaltación también puede ser acciones obviamente negativas, las acciones de una persona influyente, especialmente blanqueada por el adulador y expresada por él como la única solución correcta a la situación en cuestión.

Curiosidad

En forma patológica, este es el deseo de conocer información de interés, independientemente de la decencia, los sentimientos personales de los interrogados y la situación de la situación en la que se desarrolla la comunicación. El motivo de la curiosidad malsana es el doloroso deseo de estar al tanto incluso de aquellos acontecimientos que no están relacionados con la persona que muestra interés.

Mezquindad

El hábito de conceder gran importancia a las declaraciones y acciones insignificantes. El énfasis generalizado en los logros imaginarios de uno en contraposición a las acciones verdaderamente importantes y heroicas de quienes lo rodean. Atención a los detalles ordinarios en detrimento de los valores, deseo de obtener informes sobre los gastos del hogar hasta “la milésima”.

Espíritu de venganza

La tendencia a centrar la atención personal en todos los problemas pequeños y grandes, los conflictos cotidianos y los agravios inventados, para asegurarse de pagar cien veces más a cada uno de los infractores con el tiempo. En este caso, no importa la duración del intervalo de tiempo desde el momento de recibir un insulto real o imaginario.

Descaro

Comportamiento sin ceremonias en cualquier situación, el deseo de lograr lo que se desea con costos mínimos y "por encima de la cabeza" de los demás. Este comportamiento se forma por una educación inadecuada, por una infancia difícil o, por el contrario, por un mimo, que ha reforzado el hábito de conseguir siempre lo que se quiere a cualquier precio.

Arrogancia

La percepción de la mayoría de los demás como sujetos de una categoría obviamente inferior debido a una diferencia imaginaria en estatus social o diferencias reales basadas en características materiales, nacionales, raciales o de otro tipo. La razón puede ser una reacción defensiva ante el orgullo herido en el pasado o distorsiones en la educación.

Molestia

Incapacidad o falta de voluntad para afrontar de forma independiente los problemas emergentes, divertirse o relajarse. La razón puede estar en la inmadurez emocional, el miedo a la soledad, el deseo de aumentar la autoestima mediante la participación activa en la vida de otras personas, incluso si experimentan un malestar evidente por esto y lo declaran abiertamente.

Narcisismo

Elogio irrazonable e infundado de uno mismo, narcisismo bajo cualquier circunstancia, deseo de embellecer los resultados de las propias acciones y las propias acciones, egoísmo, actitud indiferente no solo hacia los extraños, sino también hacia las personas cercanas, interés solo en la comodidad y el beneficio personal.

Negligencia

Renuencia a cumplir cualitativamente las obligaciones asumidas o asignadas, negligencia en el comportamiento con las personas en las relaciones cotidianas o profesionales, atención insuficiente a los valores confiables, incapacidad, debido a una educación deficiente o deformación personal, para comprender la importancia de la diligencia al trabajar en algo.

Susceptibilidad

Mayor reacción negativa a los problemas cotidianos debido al egoísmo hipertrofiado. Es por él que quieres que el mundo gire a tus pies y que quienes te rodean, olvidándose de sus propias necesidades, estén a la altura de tus expectativas las 24 horas del día y durante todo el año: fueron educados, generosos y afectuosos, y Se esforzó por garantizar la comodidad de los demás.

Limitación

La confianza en que solo usted dispone de una imagen real del mundo y otras explicaciones sobre la estructura del universo y los principios de interacción entre el hombre y ambiente- una completa invención de unos patanes de mente estrecha. Ocurre por una educación insuficiente, un defecto congénito del desarrollo que impide la adecuada asimilación de la información educativa.

Alarmismo

La tendencia a aceptar como realidad las consecuencias catastróficas imaginarias de cualquier incidente, incluso menor, en la propia vida y en el mundo en su conjunto. Es una manifestación de una mala educación por parte de un reasegurador, una fantasía demasiado violenta o un trastorno del sistema nervioso debido al estrés o una enfermedad.

vulgaridad

Predilección por la vestimenta pretenciosa, demostración de seguridad material real u ostentosa mediante la adquisición de artículos de lujo innecesarios. O, y a veces ambas cosas, la pasión por los chistes verdes, las anécdotas obscenas, a menudo expresadas en un ambiente completamente inapropiado con el fin de provocar un sentimiento de incomodidad entre la mayoría de los oyentes.

Irritabilidad

Una reacción negativa a un estímulo, expresada en una manifestación excesiva de emociones, cuya intensidad no se corresponde con la fuerza de la influencia de un factor que resulta desagradable por algún motivo. La causa de la irritabilidad puede ser externa o interna, provocada por una sobrecarga del sistema nervioso o por el agotamiento del organismo por una enfermedad.

Extravagancia

Incapacidad para gastar racionalmente los ingresos, incluido el deseo de realizar adquisiciones de forma sistemática o constante por el bien del proceso en sí y no con el fin de explotar el artículo o cosa adquirido. Se basa en el deseo de sentirse “el gobernante del mundo”, de corresponder al estatus de una persona económicamente segura.

Celos

Mostrar insatisfacción o desconfianza hacia un sujeto que tiene un determinado valor para la persona celosa. Se expresa por sospecha de infidelidad o una mayor predisposición emocional hacia otra persona (en lugar del acusado puede estar no solo un cónyuge, sino también una madre, hermana, amiga; la lista puede ser interminable).

Autocrítica

El hábito de condenarse justificada e irrazonablemente por una variedad de pecados de diversa magnitud. Por ejemplo, atención insuficiente al cumplimiento de los deberes, aunque en realidad una persona lo da todo en el trabajo o en las relaciones. Posibles razones: baja autoestima, apoyo activo de un entorno interesado, perfeccionismo.

Confianza en sí mismo

Exaltación irrazonable de las propias capacidades, que supuestamente permite hacer frente a una determinada o cualquier tarea. Es la causa de alardes y acciones arriesgadas, a menudo cometidas sin tener en cuenta las normas de seguridad, las leyes de la física y los argumentos de la lógica. Basado en la inexperiencia, dependencia del deseo de vivir al borde de una falta.

Debilidad

Falta de capacidad para realizar un esfuerzo volitivo en aras de un objetivo deseado o para resistir tentaciones peligrosas e ilegales, individuos moralmente degradados. Tendencia a someterse a las decisiones ajenas, incluso cuando requieran serios sacrificios. Un rasgo de carácter tan negativo de un hombre puede convertirlo en objeto de burla en el equipo.

Cobardía

La incapacidad de resistir a un oponente debido a una fuerza de voluntad insuficientemente desarrollada y a una susceptibilidad a la fobia. Puede expresarse huyendo del lugar de algún suceso debido a un peligro imaginario o real para la propia salud o la vida, a pesar de dejar en peligro a otros posibles participantes en el incidente.

Vanidad

El deseo de recibir elogios por méritos reales e imaginarios. El deseo, ante todo, de tener una imagen positiva y no de ser digno de elogios. Calidad indiscriminada de las aprobaciones expresadas: los halagos también se perciben favorablemente. Además, no siempre es posible distinguirlo de declaraciones sinceras.

Testarudez

El deseo de actuar sólo de acuerdo con las propias ideas sobre la corrección del camino elegido, el rechazo de las autoridades, el ignorar reglas conocidas simplemente por el hábito de actuar como uno ha decidido. Falta de capacidad para ser flexible cuando los intereses chocan, falta de voluntad o incapacidad para tener en cuenta los objetivos y capacidades de los demás.

Egoísmo

El amor propio consciente, el deseo de vivir cómodamente, independientemente de los posibles inconvenientes que de ello se deriven para los demás. Sus propios intereses siempre se exaltan sobre los deseos de otras personas, las opiniones de estos últimos sobre este y otros asuntos nunca se tienen en cuenta. Todas las decisiones se basan únicamente en el propio beneficio.

Al desarrollar cualquier producto de software, el equipo de desarrollo se enfrenta en primer lugar a la tarea de elegir de manera competente una plataforma de software que determine la estructura del sistema de software.

Para hacer esto, es necesario tener en cuenta una cantidad bastante grande de características, desde "qué tan rápido funcionará todo" hasta "¿necesitamos esta función?" Y así cada vez. Es durante la lluvia de ideas que el equipo compara la conveniencia del marco, la velocidad y el conjunto de características que se implementan en él o en módulos compatibles con él.

¿Pero cuál es mejor, más rápido y más productivo?

Los desarrolladores comparan constantemente marcos para aclarar este problema. Por ejemplo, el artículo de Lukasz Kujawa ofrece una comparación de los frameworks PHP. Un "pero": el artículo es de 2013. Pero el tiempo pasa... Por eso hemos decidido realizar nuestra propia y actualizada comparación de frameworks.

Se utilizó PHP Framework Benchmark para evaluar el rendimiento. Ofrece muchos marcos para comparar (no solo los mencionados anteriormente), pero el autor no tiene prisa por agregar nuevas versiones de proyectos al repositorio, lo cual, por supuesto, es triste, aunque no fatal. Si lo desea, agregue nueva versión No es difícil. 


Uno de los principales objetivos de este artículo es también intentar identificar de forma práctica mejoras en el rendimiento y eficiencia de nuevas versiones de PHP. Por lo tanto, las pruebas se realizaron en PHP 5.6/7.0/7.1.

¿Qué compararemos?

Se eligieron los siguientes marcos para comparar:
  • delgado-3.0
  • ci-3.0
  • lumen-5.1
  • yii-2.0
  • sílex-1.3
  • combustible-1.8
  • phpixie-3.2
  • zf-2.5
  • zf-3.0
  • Symfony-2.7
  • Symfony-3.0
  • laravel-5.3
  • laravel-5.4
  • bluz (versión 7.0.0 - para PHP5.6 y versión 7.4 para PHP7.0 y superior)
  • ze-1.0
  • falcon-3.0
Las pruebas se dividen en 4 tipos:
  • rendimiento (rendimiento),
  • memoria ocupada (memoria),
  • tiempo de ejecución (tiempo de ejecución),
  • número de archivos incluidos.

Metodología de prueba y banco de pruebas.

La máquina utilizada para las pruebas tiene las siguientes características:

Sistema operativo: menta linux 17 canela de 64 bits
Canela Versión 2.2.16
Kernel de Linux: 3.13.0-24-genérico
Procesador: Núcleo Intel CPU i3-4160 de 3,60 GHz x 2
Memoria: 8GB

Versión del servidor: Apache/2.4.7 (ubuntu)
Construcción del servidor: 15 de julio de 2016
php7.1 / php7.0 / php5.6

Ingresamos el comando git clone https://github.com/kenjis/php-framework-benchmark y el marco ya está en nuestra máquina. Como usamos Mint, necesitamos hacer algunas configuraciones: 


# Agregadonet.netfilter.nf_conntrack_max = 100000net.nf_conntrack_max = 100000net.ipv4.tcp_max_tw_buckets = 180000net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 10

sudo sysctl -p

Un poco sobre la estructura del propio php-framework-benchmark:

/puntos de referencia- contiene scripts bash responsables de recopilar información sobre la cantidad de solicitudes por segundo (usando la utilidad ab), la cantidad de información, cuánto tiempo se invirtió y cuántos archivos se llamaron desde el archivo de "punto de inicio".

/lib- un directorio que contiene archivos responsables de procesar la información recibida después de mostrar la página "Hola mundo", mostrar tablas con resultados y construir diagramas.

/producción- directorio al que se agregan los registros después de la prueba. Aquí hay dos archivos para cada archivo probado: .ab.log: el registro después de que se ejecutó la utilidad ab, y .output: contiene la información que se mostró en la pantalla (generalmente esta Hola Mundo y datos sobre memoria, tiempo de ejecución, archivos utilizados).

Las carpetas restantes son plantillas de marcos, a las que ya se les ha agregado un controlador, que devolverá la cadena "hola mundo" cuando se acceda mediante un URI compilado de acuerdo con las reglas de acceso a este marco.

Para ejecutar una prueba, primero debe configurar los marcos. Consideremos dos enfoques.

El comando bash setup.sh configurará los marcos que se describen en el archivo list.sh. Puedes editarlo: agregar y eliminar carpetas para realizar pruebas. Es decir, configúralo como necesites.

Usando el comando bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/, puede instalar algunos marcos individuales especificándolos como parámetros del comando. En algunos casos esto es conveniente, pero utilizamos el primer enfoque.

Después de configurar los marcos, comenzamos a realizar pruebas utilizando bash benchmark.sh.

Al final del trabajo, apareció en la terminal una tabla con una lista de frameworks probados, el número de solicitudes por segundo, el valor relativo de memoria ocupada, así como los valores relativos de estos indicadores.

Para mostrar los gráficos, utilizamos el enlace http://localhost/php-framework-benchmark/.

Como comprenderás, era necesario hacer configuración de apache y obligarlo a mirar la carpeta del marco. Todo esto se describe en el archivo Léame, por lo que no hay preguntas.

Resultados de las pruebas del marco

Cada sección tiene una estructura que consta de dos formas de presentación de resultados.

La primera forma es un tipo de presentación visual. Cada característica contiene 4 diagramas. Cada gráfico muestra una comparación entre marcos, además de un gráfico acumulativo. Fue construido usando versión específica RNR. De esta forma podrás seguir la evolución de las mejoras en PHP y frameworks.

La segunda forma es el resultado de la prueba en forma de tabla (basta de visualización, seamos serios, ¡dame más números!).

Rendimiento (rendimiento)

En relación con nuestra situación, la característica de rendimiento se mide en la cantidad de solicitudes que nuestro marco puede procesar en un segundo. Por tanto, cuanto mayor sea este número, más rendimiento tendrá nuestra aplicación ya que podrá procesar las solicitudes correctamente. gran cantidad usuarios.

Obtuvimos los siguientes resultados (solicitudes por segundo):

php 5.6 PHP 7.0 PHP 7.1
falcon-3.1.2 5058.00 5130.00 7535.00
ci-3.0 2943.55 4116.31 4998.05
delgado-3.0 2074.59 3143.94 3681.00
yii-2.0 1256.31 2276.37 2664.61
sílex-1.3 1401.92 2263.90 2576.22
lumen-5.1 1316.46 2384.24 2741.81
ze-1.0 1181.14 1989.99 1741.81
phpixie-3.2 898.63 1677.15 1896.23
combustible-1.8 1044.77 1646.67 1770.13
bluz-7.3.1 - * 1774.00 1890.00
zf-2.5 198.66 623.71 739.12
zf-3.0 447.88 1012.57 1197.26
Symfony-2.7 360.03 873.40 989.57
Symfony-3.0 372.19 853.51 1022.28
laravel-5.3 258.62 346.25 625.99
laravel-5.4 219.82 413.49 600.42

Para mayor claridad, creamos gráficos para cada versión de PHP:

PHP5.6:

PHP7.0:

PHP7.1:



Memoria máxima

Esta característica (en megabytes) es responsable de la cantidad de memoria que ocupa el framework al realizar la tarea que se le asigna. Cuanto menor sea este número, mejor para nosotros y para el servidor:
php 5.6 PHP 7.0 PHP 7.1
falcon-3.1.2 0.27 0.38 0.37
ci-3.0 0.42 0.38 0.38
delgado-3.0 0.61 0.55 0.55
yii-2.0 1.31 0.91 0.91
sílex-1.3 0.74 0.65 0.65
lumen-5.1 0.80 0.63 0.63
ze-1.0 0.79 0.56 0.56
phpixie-3.2 1.22 0.82 0.82
combustible-1.8 0.7 0.6 0.6
bluz-7.3.1 - * 0.69 0.69
zf-2.5 3.06 1.34 1.34
zf-3.0 2.12 1.09 1.08
Symfony-2.7 3.11 1.41 1.42
Symfony-3.0 2.86 1.30 1.32
laravel-5.3 2.91 2.04 2.04
laravel-5.4 3.04 1.45 1.49

* - bluz-7.3.1 no es compatible con php 5.6

PHP 5.6:

PHP 7.0:

PHP 7.1:

Cuadro resumen acumulativo (por marco):

plazo de entrega

El tiempo de ejecución es el tiempo que le toma al sistema completar una tarea determinada. Se mide desde el comienzo de la tarea hasta la salida del resultado por parte del sistema.

Observamos cuántas solicitudes por segundo puede procesar el marco y cuánta memoria ocupa. Ahora veamos cuánto tiempo debemos esperar para recibir una respuesta del servidor. Cuanto menor sea este valor, mejor para nosotros. , y para el sistema nervioso del cliente de nuestra aplicación.

El tiempo se expresa en milisegundos (ms):

php 5.6 PHP 7.0 PHP 7.1
falcon-3.1.2 1.300 1.470 1.080
ci-3.0 0.996 0.818 1.007
delgado-3.0 1.530 1.228 0.662
yii-2.0 1.478 1.410 1.639
sílex-1.3 4.657 1.625 2.681
lumen-5.1 2.121 1.829 1.228
ze-1.0 2.629 2.069 1.528
phpixie-3.2 9.329 4.757 1.911
combustible-1.8 3.283 2.684 1.425
bluz-7.3.1 - * 1.619 1.921
zf-2.5 22.042 5.011 3.998
zf-3.0 12.680 2.506 2.989
Symfony-2.7 6.529 3.902 2.384
Symfony-3.0 9.335 3.987 2.820
laravel-5.3 19.885 4.840 2.622
laravel-5.4 19.561 4.758 3.940

PHP 5.6:

PHP 7.0:

PHP 7.1:

Cuadro resumen acumulativo (por marco):

Archivos incluidos

Una característica responsable de la cantidad de archivos incluidos que se describen en el archivo de "punto de entrada" del marco. Está claro que el sistema dedica algún tiempo a buscar y conectarse. Por eso, cuantos menos archivos, más rápido la aplicación se iniciará por primera vez, ya que normalmente en momentos posteriores el framework trabaja con el caché, lo que acelera el trabajo:
falcon-3.1.2 5
ci-3.0 26
delgado-3.0 53
yii-2.0 46
sílex-1.3 63
lumen-5.1 37
ze-1.0 68
phpixie-3.2 163
combustible-1.8 53
bluz-7.3.1 95
zf-2.5 222
zf-3.0 188
Symfony-2.7 110
Symfony-3.0 192
laravel-5.3 38
laravel-5.4 176


La diferencia en el número de archivos incluidos entre Laravel 5.3 y Laravel 5.4 puede parecer extraña y dar lugar a discusiones, disputas, etc. Nos apresuramos a aclarar la situación. Como sabes, usando el comando

Optimización artesanal de PHP --force

En Laravel 5.3, puede generar un archivo compilado.php y, por lo tanto, reducir la cantidad de archivos incluidos al recopilarlos en uno. Pero hay un “pero”: el comando para generar este archivo en Laravel 5.4 ya no está disponible. El desarrollador decidió eliminar esta característica porque consideró (https://github.com/laravel/framework/pull/17003) que era mejor usar opcache para ajustar el rendimiento.

¿Vale la pena actualizar?

Los datos resumidos por versión muestran más que claramente el aumento en la productividad y la eficiencia de los recursos que se producirá al cambiar (o elegir inicialmente) a una nueva versión de PHP.

Al pasar de PHP 5.6 a PHP 7.0, el aumento de rendimiento promedio fue de casi +90%, con un aumento de rendimiento mínimo de +33% para Laravel 5.3 y un máximo de >200% para Zend Framework 2.5.

La transición de la versión 7.0 a la 7.1 ya no es tan sorprendente, pero aún así, en promedio, proporciona un aumento de rendimiento de casi un 20%.

Combinando todos los datos obtenidos sobre el rendimiento de diferentes versiones de PHP, obtenemos los siguientes “colchones”:


Dato curioso: Laravel 5.3 mostró la menor ganancia de rendimiento al migrar de PHP 5.6 a PHP 7.0, pero el mayor aumento al migrar de la versión 7.0 a la versión 7.1 y, como resultado, el rendimiento de Laravel 5.3 y 5.4 en PHP 7.1 es casi el mismo.

El consumo de memoria también se ha optimizado, por lo que pasar de PHP 5.6 a PHP 7.0 permitirá que tu aplicación consuma un 30% menos de memoria.

Actualizar de la versión 7.0 a la versión 7.1 prácticamente no da ningún aumento, y en los últimos Symfony y Laravel estamos completamente en números rojos, porque empiezan a “comer” un poco más.


Solo queda mirar el tiempo de ejecución, y sí, aquí también todo está bien:

  • Pasar de PHP 5.6 a PHP 7.0 le dará una aceleración promedio del 44%.
  • Pasar de PHP 7.0 a PHP 7.1 le dará otro 14% de aceleración.

Nota. Pruebas con ab: lo que encontramos


"¿Qué pasa con slim y phpixie?": esta pregunta nos llevó a investigar el comportamiento de la utilidad ab al interactuar con estos marcos.

Ejecutemos la prueba por separado para Slim-3.0:

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Nivel de concurrencia: 10
Tiempo necesario para las pruebas: 5.005 segundos
Solicitudes completas: 2
Solicitudes fallidas: 0
Total transferido: 1800 bytes
HTML transferido: 330 bytes
Solicitudes por segundo: 0,40 [#/seg] (media)
Tiempo por solicitud: 25024,485 (media)
Tiempo por solicitud: 2502,448 (media, en todas las solicitudes simultáneas)
Tasa de transferencia: 0,35 recibido

Algo anda mal: el número de solicitudes por segundo es solo 0,4 (!)

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/laravel-5.4/public/index.php/hello/index

Nivel de concurrencia: 10
Tiempo necesario para las pruebas: 3.004 segundos
Solicitudes completas: 1961
Solicitudes fallidas: 0
Total transferido: 1995682 bytes
HTML transferido: 66708 bytes
Solicitudes por segundo: 652,86 [#/seg] (media)
Tiempo por solicitud: 15.317 (media)
Tiempo por solicitud: 1,532 (media, en todas las solicitudes simultáneas)
Tasa de transferencia: 648,83 recibidos

El problema era una conexión Keep Alive; puedes encontrar más información aquí.

“Cuando realiza solicitudes con “Conexión: mantener vivo”, la solicitud posterior al servidor utilizará la misma conexión TCP. Esto se llama conexión persistente HTTP. Esto ayuda a reducir la carga de la CPU en el lado del servidor y mejora la latencia/tiempo de respuesta.

Si se realiza una solicitud con “Conexión: cerrar” esto indica que una vez realizada la solicitud ha sido hecho que el servidor necesita cerrar la conexión. Y así, para cada solicitud se establecerá una nueva conexión TCP.

De forma predeterminada, el cliente/servidor HTTP 1.1 utiliza keep-alive, mientras que el cliente/servidor HTTP 1.0 no admite keep-alive de forma predeterminada”.


Entonces la prueba para Slim debería verse así:

Ab -H "Conexión: cerrar" -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Nivel de concurrencia: 10
Tiempo necesario para las pruebas: 3.000 segundos.
Solicitudes completas: 10709
Solicitudes fallidas: 0
Total transferido: 2131091 bytes
HTML transferido: 353397 bytes
Solicitudes por segundo: 3569,53 [#/seg] (media)
Tiempo por solicitud: 2.801 (media)
Tiempo por solicitud: 0,280 (media, en todas las solicitudes simultáneas)
Tasa de transferencia: 693,69 recibidos

Conclusión

Como se esperaba líder incondicional en términos de rendimiento (pero no de velocidad de desarrollo), Phalcon lo es. El segundo lugar, y de hecho el primero entre los frameworks PHP (no C, en el que está escrito el código fuente de Phalcon), es CodeIgniter 3.

Por supuesto, no debemos olvidar que cada instrumento tiene su propio propósito. Si elige un marco pequeño y liviano y va a escribir algo más que aplicaciones simples o API REST en él, lo más probable es que encuentre problemas al expandir la funcionalidad. Y viceversa: la redundancia de marcos grandes y con todas las funciones implicará costos financieros para mantener el alojamiento incluso para aplicaciones elementales con una carga pesada.

Esta prueba se realizó para convencer/decir/fortalecer la posición de las versiones 7.0 y 7.1 del lenguaje PHP en su mente y en proyectos futuros, para transmitir el mensaje de que la productividad efectivamente ha aumentado.

Refactorización estructuras internas Los datos y la adición de un paso adicional antes de compilar el código en forma de árbol de sintaxis abstracta (AST) dieron como resultado un rendimiento superior y una asignación de memoria más eficiente. Los resultados en sí parecen prometedores: las pruebas realizadas en aplicaciones reales, muestran que PHP 7 en promedio se duplicó PHP más rápido 5.6 y también utiliza un 50% menos de memoria durante el procesamiento de solicitudes, lo que convierte a PHP 7 en un fuerte competidor para el compilador HHVM JIT de Facebook.

Las pruebas confirman completamente tanto el procesamiento de solicitudes dos veces acelerado en PHP7 como la cantidad reducida de memoria utilizada.

La elección es demasiado amplia y seleccionar el marco adecuado se ha vuelto bastante problemático. Como muchos otros desarrolladores, es posible que su atención se centre en los marcos populares, probados y confiables Bootstrap y Foundation. Sin embargo, los marcos más nuevos y menos conocidos pueden adaptarse mucho mejor a sus necesidades. En tales condiciones, simplemente necesita comprender los marcos más populares en la actualidad.

Qué buscar al elegir un marco front-end

Antes de buscar un marco de interfaz de usuario para su próximo proyecto, es muy importante que se familiarice con las funciones más interesantes. Conociéndolos, podrá sopesar todos los pros y los contras de los frameworks front-end más populares mucho más rápido:

Su nivel: considere su nivel de conocimiento al elegir un marco de front-end. Si es un principiante, es posible que desee considerar el robusto marco Bootstrap, que tiene muchos widgets integrados y requiere habilidades mínimas de codificación. Si es un desarrollador más avanzado, entonces le conviene un marco más simple, que le dará más espacio para la personalización. Estos marcos son más compactos y tienen menos código, lo que sólo será una ventaja.

Diseño responsivo: cualquier sitio web que desarrolle debe mostrarse bien en todos los dispositivos, ya que todo mas gente acceder a Internet a través de dispositivos móviles. Similar Web publicó un informe sobre el estado de Internet móvil en los Estados Unidos de 2015, que encontró que el 56 por ciento de los principales consumidores de tráfico de sitios de EE. UU. acceden a Internet desde un dispositivo móvil. Busque frameworks front-end que admitan el diseño responsivo, entonces tendrá un problema menos.

JavaScript. Inicio rápido

Aprenda los conceptos básicos de JavaScript con un ejemplo práctico de cómo crear una aplicación web.

Preprocesadores CSS: si está utilizando preprocesadores CSS, como Sass o LESS, asegúrese de que sean compatibles con el marco.

Apariencia: elija un marco que le permita lograr una apariencia excelente apariencia con el menor esfuerzo.

Creación de prototipos: el marco de interfaz de usuario ideal le permite crear rápidamente estructuras alámbricas y prototipos para acelerar el proceso de diseño y desarrollo.

Y lo más importante: un buen marco de front-end simplifica, moderniza y acelera el proceso de diseño y desarrollo del sitio web, al mismo tiempo que le brinda la flexibilidad y funcionalidad para crear un producto único.

Sin más preámbulos, les presento el octavo framework front-end más popular en 2016.

Oreja

El TOP estaría incompleto sin el muy popular framework de front-end Bootstrap. Los autores del marco son los creadores de Twitter, que lo lanzaron en 2011. El framework de código abierto más utilizado en el mundo.

Como cualquier otro marco de interfaz de usuario eficaz, Bootstrap incluye componentes HTML, CSS y JS. El marco se adhiere a los estándares de diseño web responsivo, lo que le permite crear sitios web responsivos de cualquier complejidad y tamaño.

Las actualizaciones constantes de Bootstrap garantizan que obtenga lo más nuevo y mejores características. Por ejemplo, casi de inmediato se agregaron al marco temas que cumplían con los estándares de diseño de materiales de Google. Los temas se han mejorado para admitir Sass.

soporte para diseño web responsivo (se puede desactivar si se desea);

Amplia documentación.

los estilos poco utilizados aumentan el peso del marco estándar a 276 KB;

Hay demasiadas clases HTML y elementos DOM, lo que contamina el código y confunde al usuario.

Adecuado para principiantes y aquellos que prefieren marcos front-end confiables.

No hay estilos bloqueados, lo que le brinda más flexibilidad;

Se utilizan unidades en lugar de píxeles. Mediciones REM, que le permite no establecer explícitamente el ancho, el alto y otros atributos para cada dispositivo.

Un peso bastante grande de archivos por defecto;

un poco complicado para principiantes.

Adecuado para desarrolladores con experiencia decente, cuya tarea principal es rápido desarrollo Sitios web atractivos y responsivos.

Materializar

El marco Pure fue creado por el equipo de desarrollo de Yahoo. El kit incluye una variedad liviana de módulos CSS que son adecuados para cualquier proyecto. Con Pure puedes crear fácilmente botones, menús, cuadrículas, tablas, etc. El marco está escrito en CSS puro y no admite complementos JS o JQuery.

Después de la minificación y compresión a través de Gzip, el framework Pure se comprime a 4,5 Kb, lo que lo convierte en uno de los frameworks front-end más ligeros y con mayor capacidad de respuesta. Pure es ideal para el desarrollo móvil, por lo que ha atraído a muchos desarrolladores.

muy ligero, lo que garantiza carga rapida incluso en dispositivos móviles;

Se puede utilizar una gama flexible de módulos CSS en absolutamente cualquier diseño y proyecto.

escrito en CSS sin soporte para complementos JS o JQuery.

Adecuado para desarrolladores que se centran en crear sitios móviles rápidos y con capacidad de respuesta.

Esqueleto

Esqueleto – ligero plantilla responsiva en sólo 400 líneas de código. El marco incluye la funcionalidad mínima necesaria para iniciar el desarrollo. A diferencia de los marcos descritos anteriormente, este no es solución integral.

Esqueleto marco adaptativo, que se basa en una cuadrícula de 12 columnas. Solo incluido elementos necesarios: botones, listas, tablas, formularios, etc.

muy claro;

Simplicidad y comodidad para escribir pequeños proyectos.

ausencia amplia elección componentes, a diferencia de los grandes marcos.

Adecuado para quienes crean. pequeños proyectos, donde no necesitas todos los componentes de estilo que se pueden encontrar en marcos grandes.

UIKit

UIKit es un marco de interfaz de usuario altamente modular que se destaca entre la multitud por una variedad de razones. Razón principal– la presencia de dos preprocesadores, LESS y Sass.

Gracias a sus componentes flexibles y adaptables con nombres claros UIKit se ha convertido en uno de los frameworks front-end más populares.

Los 30 componentes modulares hacen que la estructura sea aún más versátil. Los componentes incluyen: menú, formularios HTML y tablas, componentes JS, por ejemplo, pestañas deslizantes y ventanas modales, elementos comunes como botones, letreros y superposiciones, y componentes de diseño como fluidos, sistemas adaptativos rejillas

alta personalización;

una estructura modular única que le permite agregar componentes a los estilos sin afectar los estilos generales;

la capacidad de crear interfaces complejas gracias a componentes como listas anidadas.

El marco es aún nuevo y hay muy pocos recursos en Internet.

Adecuado para desarrolladores bastante experimentados, ya que en este momento Hay muy poca información sobre el marco. Ideal para crear proyectos tanto simples como complejos.

Miligramo

Milligram es otro framework liviano similar a Skeleton. Después de la compresión mediante Gzip, el tamaño del archivo alcanza los 2 KB, lo que proporciona a los desarrolladores un inicio sencillo y cómodo.

El sistema de cuadrícula de Milligram es diferente de la mayoría porque utiliza el estándar CSS Flexible Box Layout Module. También se incluyen un par de componentes clave para ayudarle a comenzar, incluidas fuentes, botones, formularios, listas, tablas, citas y más.

muy ligero, sólo 2 Kb después de la compresión mediante Gzip;

Utiliza el sistema de cuadrícula Flexbox.

el marco es bastante nuevo, hay muy poca información al respecto;

Número mínimo de componentes de estilo en comparación con marcos más grandes.

Adecuado para desarrolladores que crean proyectos pequeños que no necesitan muchos componentes de estilo y para desarrolladores que desean utilizar Flexbox.

susy

Algunos dirán que Susy no es exactamente un framework front-end, ya que resuelve problemas complejos de diseño. De hecho, mucha gente considera a Susy como un sistema de red, pero puede convertirse en una herramienta indispensable para personas que trabajan con diseños.

Susy te equipa con mixins que puedes usar para crear mallas. El marco hace todos los cálculos por usted, lo que ahorra mucho tiempo y esfuerzo.

Susy te permite crear mallas de cualquier complejidad. Si intentaste resolver el problema con la creación sistema complejo cuadrículas, Susy te ayudará.

una mayor flexibilidad le permite crear mallas de cualquier complejidad;

cálculos automáticos.

no cubre todas las cuestiones de diseño de sitios web, lo que requerirá otro marco;

sin rejillas incorporadas.

Adecuado para desarrolladores con desafíos de diseño únicos.

Estadísticas sobre marcos front-end

Su decisión no debe basarse en la popularidad del marco. El marco debe seleccionarse en función de las necesidades de desarrollo. Y, sin embargo, es interesante cómo se clasificarán todos estos marcos en el ranking. La siguiente lista muestra cuántas estrellas ha recibido cada proyecto en GitGub al momento de escribir este artículo (del más popular al menos popular).

Bootstrap: 101,433 estrellas

Interfaz de usuario semántica: 28.170 estrellas

Fundación: 24.127 estrellas

Materializar: 21.515 estrellas

Interfaz de usuario material: 19,631 estrellas

Puro: 14.967 estrellas

Esqueleto: 12.622 estrellas

UIKit: 7.433 estrellas

Miligramo: 4.195 estrellas

Susy: 3.506 estrellas

Además, en una comparación del TOP 5 de frameworks front-end en Google Trends, queda claro que Bootstrap todavía está muy por delante de sus competidores en términos de número de menciones.

Conclusión

Como puede ver, los diferentes marcos front-end tienen sus ventajas. Lo que funciona para un desarrollador o proyecto puede no funcionar para otro. Por eso, es sumamente importante analizar muchas opciones antes de elegir algo en específico.

Antes de elegir un framework front-end, determine su nivel de conocimiento, así como los requisitos básicos de su proyecto. Lo más probable es que uno o más de los productos de esta lista sean perfectos para usted.




Arriba