您好我遇到了以下代码作为对stackoverflow问题的回复。以下是与该问题没有直接联系的答案,但它似乎提高了代码的效率。
for (int i = 0; i < nodeList.getLength(); i++)
更改为
for (int i = 0, len = nodeList.getLength(); i < len; i++)
更有效率。第二种方式可能是最好的,因为它倾向于 使用更平坦,可预测的记忆模型。
我读到了关于平面内存模型但我无法明白这一点。即,它以何种方式使代码更有效。有人可以解释一下。
答案 0 :(得分:0)
每次程序循环时都不会调用nodeList.getLength(),而是调用一次,存储在整数len中,然后将i与len进行比较,而不是运行nodeList.getLength()。
答案 1 :(得分:0)
平面内存模型或线性内存模型是指内存寻址范例,其中&#34;内存在程序中显示为单个连续的地址空间。&#34; CPU可以直接(并线性)寻址所有可用的内存位置,而无需采用任何类型的内存分段或分页方案。
记住这一点,计算机一次声明一行内存。当在行本身内声明变量时,它会在寻找值时产生较小的压力。
_footer = _htmlDocument.DocumentNode.SelectSingleNode("//tfoot/tr/th[@class='first']/td[1]");
return _footer.First().InnerText;
比
更有效率for (int i = 0, len = nodeList.getLength(); i < len; i++)