【发布时间】:2011-10-02 04:55:40
【问题描述】:
我只是想知道在 CSS 中使用十六进制颜色代码或颜色名称是否更快?
【问题讨论】:
-
摘下挂在最低处的果实。说真的,在这成为问题之前,您应该优化几乎所有其他内容。
-
是的,我知道我应该优化其他所有内容。这只是我脑后想知道的事情。
-
从浏览器设计的角度来看,这是一个有趣的问题,而不是从网络优化的角度来看。
我只是想知道在 CSS 中使用十六进制颜色代码或颜色名称是否更快?
【问题讨论】:
我将违背普遍的共识,并建议如果查找表将颜色值作为整数返回,颜色名称可能会更快。这意味着当使用命名颜色时,浏览器不必手动将包含十六进制字符的字符串解析为相应的整数,它所需要做的只是 O(1) 哈希查找。这可能比从字符串解析为整数要快一些。
尽管正如其他人正确指出的那样,但实际上两者之间的差异将非常小。不是你在实践中会注意到的。
【讨论】:
我的猜测是代码会更快,因为名称可能已分配给查找表并参考十六进制代码。
话虽如此,我的猜测是速度差异将完全可以忽略不计。
这是我刚刚创建的性能测试。它们是并驾齐驱的,尽管到目前为止,十六进制代码在 4/5 次运行中似乎只快不了多少: http://jsperf.com/css-color-names-vs-hex-codes
【讨论】:
#FFF)、长十六进制代码 (#FFFFFF)、rgb、rgba 和颜色代码。
在渲染方面更快?
实际上,它不可能有任何改变。
从技术角度来说,这取决于 CSS 渲染在每个浏览器中的实现方式。如果我不得不猜测,我想在大多数浏览器中使用十六进制会快大约 3 个 CPU 周期(有点夸张),因为名称必须先转换为十六进制。
但是,自互联网发明以来,您提出问题所花费的时间比世界上所有浏览器在进行此转换所浪费的时间还要多。
【讨论】: