我正在开发一个使用libxml2
. 在处理 HTML 树时,我会检查每个text()
节点的祖先以选择合适的样式。对于标头,我使用以下查询来查看节点是否为标头:
boolean(ancestor::*[
self::h1 or
self::h2 or
self::h3 or
self::h4 or
self::h5 or
self::h6])
一本 5 MB 的书,通过需要 1.1 秒。加上两个额外的重点和代码样式查询(具有更大的节点名称集),它加起来是 4.4 秒。
根据苹果的 Instruments,瓶颈线是:
xmlXPathObject *object = xmlXPathNodeEval(node, query, context);
我缓存context
以加快速度。我还能做些什么来让它更快吗?