我必须为分层组织的数据集写下xml模式。它必须由Nokogiri解析以进行信息检索。我的问题是,从绩效的角度来看,是尊重等级制度好,还是扁平化等级制度好?例如
<item_1 id="id_1">
<item_2 id="id_2">value</item_2>
</item_1>
或
<item id_1="id_2" id_2="id_2">value</item>
我知道从可读性和可维护性的角度考虑应该避免使用多个属性,但是性能是我优先考虑的。
如果您想要绝对最快的性能,并且文档很大,那么您可能根本不想使用XPath。SAX(或Reader)过滤器将是最快的。
但是如果你想让Nokogiri解析文档并为XPath创建DOM,我认为你是否使用:
查询不会有太大区别doc.xpath('/item1[@id=x]/item2[@id=y]') #first case
或
doc.xpath('/item[@id_1=x and @id2=y]') #second case
当然,根据您的实际数据对这两个解决方案进行基准测试是确定的唯一方法。