2011-07-10 10 views
12

Solo quería saber si es más rápido usar códigos de color hexadecimal o los nombres de colores cuando quiero usarlo en CSS.cuál es más rápido: ¿códigos de color hexadecimales o nombres de colores?

+9

escoge la fruta que cuelga más baja. en serio, debes optimizar casi todo lo demás antes de que esto se convierta en un problema. –

+1

Sí, sé que debería optimizar todo lo demás. era solo una cosa que quería saber en la parte posterior de mi cabeza. –

+0

Esta es una pregunta interesante más desde el punto de vista del diseño de un navegador, que desde un punto de vista de optimización web. – Flimzy

Respuesta

14

Supongo que los códigos serán más rápidos ya que los nombres probablemente se asignan a una tabla de búsqueda y códigos hexadecimales de referencia de todos modos.

Habiendo dicho eso, supongo que la diferencia de velocidad será completamente insignificante.

Aquí hay una prueba de rendimiento que acabo de crear. Están en la misma situación, aunque los códigos hexadecimales parecen ser apenas más rápidos en 4/5 carreras hasta ahora: http://jsperf.com/css-color-names-vs-hex-codes

+0

Sí, esa era mi suposición, y sí, sé que no hace mucha diferencia, pero solo quería estar seguro. –

+4

Aquí está [una revisión de esa prueba] (http://jsperf.com/css-color-names-vs-hex-codes/17), comparando códigos hexadecimales cortos ('# FFF'), códigos hexadecimales largos (' # FFFFFF'), 'rgb',' rgba', y códigos de color. – nhinkle

5

¿Más rápido en términos de rendimiento?

En términos prácticos, no hay forma posible de que haga alguna diferencia.

En términos técnicos, eso depende de cómo se implemente el procesamiento de CSS en cada navegador. Si tuviese que adivinar, me imagino que usar hexadecimal es más o menos 3 ciclos de CPU (una exageración) más rápido en la mayoría de los navegadores, ya que primero se debe convertir el nombre en hexadecimal.

Pero el tiempo que tardó en formular la pregunta representa más tiempo del que han desperdiciado todos los navegadores del mundo que realizan esta conversión desde que se inventó Internet.

+2

Principalmente estoy de acuerdo contigo, pero el reclamo de "3 ciclos de CPU" parece bastante mal pensado ... para convertir un nombre en su equivalente numérico necesitas encontrar su entrada en una tabla de búsqueda de n entradas que tomarán, en promedio , (log n)/2 intentos; cada intento tomaría considerablemente más de 3 ciclos de CPU para encontrar la entrada real y luego realizar la comparación de cadenas. Dicho esto, incluso si la conversión lleva 30000 ciclos de CPU más largos, el usuario no verá ninguna diferencia. – mah

+0

Lo siento, quise añadir una nota lateral a mi figura de "3 ciclos de CPU", pero lo olvidé. Me doy cuenta de que es una exageración. He actualizado la respuesta :) – Flimzy

+0

No sé nada sobre el funcionamiento interno del navegador, pero un hash muy simple con O (1) parece ser mejor para esta tarea. –

7

Iré contra el consenso popular y sugiero que es posible que los nombres de los colores sean más rápidos, si la tabla de búsqueda devuelve el valor del color como un número entero. Eso significaría que al usar un color con nombre el navegador no tiene que analizar manualmente desde una cadena que contiene caracteres hexadecimales al entero correspondiente, todo lo que necesita hacer es una búsqueda de hash O (1). Y eso puede ser un poco más rápido que analizar de cadena a entero.

Aunque como otros han señalado correctamente, en términos prácticos, la diferencia entre los dos será infinitamente pequeña. No es algo que puedas notar en la práctica.

+2

hmmm, punto interesante. su respuesta muestra que incluso en los asuntos más insignificantes y pequeños podría haber tanto en lo que no estar de acuerdo. –

+0

No había pensado en eso. Apuesto a que algunos navegadores hacen exactamente lo que dices, y otros no.Y esto trae a colación la otra pregunta: ¿Es la búsqueda de nombre más rápida que una conversión hexadecimal de 3 dígitos, también, o solo más rápida que los colores hexadecimales de 6 dígitos? Hmmmm! – Flimzy

Cuestiones relacionadas