我正在寻找一种高性能的方法来计算包含Unicode文本的固定宽度div
的高度(内部没有HTML标签,只有文本!)。
我们尝试使用复制的CSS样式将文本复制到隐藏的绝对定位的div
元素中并从中获取clientHeight
,但此解决方案的性能无法满足我们的需求。 Ext.util.TextMetrics
实施了同样的方法。对于使用此方法的5000多个div
元素需要大约11-12秒,这是很多。
注意对于我们的任务,我们需要为每个div
执行此操作,但即使不是所有这些都将最初显示。那是因为我们需要预先知道这些5000多个元素中每个人div
的高度。
我们尝试创建简单的自动换行算法并通过确定行数来计算div
的高度,然后将其乘以行高,并且在性能方面效果非常好。对于相同软件/硬件配置中相同数量的div
元素,它需要45毫秒(超过200倍) - 使用上述慢速方法预先预先计算字符宽度。在这一点上,我们没有考虑所有自动换行的细节以及我们有Unicode文本的事实。我们正在考虑使这种算法跨浏览器并考虑这些细节。我们并不是100%确定它是以跨浏览器方式实现的。
所以,有两个问题: