PHP循环上下文查询
一直困扰我的一个问题是,为什么人们会像第一个版本那样写,而第二个版本更小,更容易阅读。我认为这可能是因为php每次迭代时都会计算strlen。有什么想法吗 第一版PHP循环上下文查询,php,loops,Php,Loops,一直困扰我的一个问题是,为什么人们会像第一个版本那样写,而第二个版本更小,更容易阅读。我认为这可能是因为php每次迭代时都会计算strlen。有什么想法吗 第一版 for ($i = 0, $len = strlen($key); $i < $len; $i++) {} 如果循环需要多次迭代,并且$key在此过程中不会更改,则最好使用第一个版本 如果循环正在更新$key并且您需要重新计算它,或者在重新计算时它不会影响您的性能,则最好使用第二个版本。如果循环需要多次迭代并且$key
for ($i = 0, $len = strlen($key); $i < $len; $i++) {}
如果循环需要多次迭代,并且
$key
在此过程中不会更改,则最好使用第一个版本
如果循环正在更新
$key
并且您需要重新计算它,或者在重新计算时它不会影响您的性能,则最好使用第二个版本。如果循环需要多次迭代并且$key
在过程中不会更改,则最好使用第一个版本
如果循环正在更新
$key
并且您需要重新计算它,或者在重新计算时它不会影响您的性能,则最好使用第二个版本。如果循环需要多次迭代并且$key
在过程中不会更改,则最好使用第一个版本
如果循环正在更新
$key
并且您需要重新计算它,或者在重新计算时它不会影响您的性能,则最好使用第二个版本。如果循环需要多次迭代并且$key
在过程中不会更改,则最好使用第一个版本
如果循环正在更新
$key
并且您需要重新计算它,或者重新计算时不影响您的性能,则最好使用第二种方法。这是性能问题
您的for
循环的第一个版本每次都会重新计算strlen
,因此性能可能会降低
尽管这还不够重要,但你可能会惊讶地发现,慢的速度有时是指数级的
您可以查看一些带有循环的性能基准。这是性能问题 您的
for
循环的第一个版本每次都会重新计算strlen
,因此性能可能会降低
尽管这还不够重要,但你可能会惊讶地发现,慢的速度有时是指数级的
您可以查看一些带有循环的性能基准。这是性能问题 您的
for
循环的第一个版本每次都会重新计算strlen
,因此性能可能会降低
尽管这还不够重要,但你可能会惊讶地发现,慢的速度有时是指数级的
您可以查看一些带有循环的性能基准。这是性能问题 您的
for
循环的第一个版本每次都会重新计算strlen
,因此性能可能会降低
尽管这还不够重要,但你可能会惊讶地发现,慢的速度有时是指数级的
您可以查看一些带有循环的性能基准。因为您的第二个版本将在每个循环中重新计算strlen,并降低性能。我想可能是这样的。。把它写在一个答案中,并获得一些分数:)你明白原因。为了看看它是否有很大的不同,你可以测试它。时间一个大循环,你就会得到你的答案。我认为差别很小,特别是如果在循环内完成了合理的数量。你可以使用它循环1.000.000次,然后以毫秒为单位检查差异(在循环前后的时间)。这将回答您的问题。我更喜欢
while($I--)
,但我发现这很有趣:因为您的第二个版本将在每个循环中重新计算strlen
,并降低性能。我想可能是这样的。。把它写在一个答案中,并获得一些分数:)你明白原因。为了看看它是否有很大的不同,你可以测试它。时间一个大循环,你就会得到你的答案。我认为差别很小,特别是如果在循环内完成了合理的数量。你可以使用它循环1.000.000次,然后以毫秒为单位检查差异(在循环前后的时间)。这将回答您的问题。我更喜欢while($I--)
,但我发现这很有趣:因为您的第二个版本将在每个循环中重新计算strlen
,并降低性能。我想可能是这样的。。把它写在一个答案中,并获得一些分数:)你明白原因。为了看看它是否有很大的不同,你可以测试它。时间一个大循环,你就会得到你的答案。我认为差别很小,特别是如果在循环内完成了合理的数量。你可以使用它循环1.000.000次,然后以毫秒为单位检查差异(在循环前后的时间)。这将回答您的问题。我更喜欢while($I--)
,但我发现这很有趣:因为您的第二个版本将在每个循环中重新计算strlen
,并降低性能。我想可能是这样的。。把它写在一个答案中,并获得一些分数:)你明白原因。为了看看它是否有很大的不同,你可以测试它。时间一个大循环,你就会得到你的答案。我认为差别很小,特别是如果在循环内完成了合理的数量。你可以使用它循环1.000.000次,然后以毫秒为单位检查差异(在循环前后的时间)。这将回答你的问题。我更喜欢而($I--)
,但我发现这很有趣:很难将其标记为正确。我喜欢你的评论说“如果循环正在更新$key并且你需要重新计算它”,这取决于。如果键的长度在某一点缩短,而不重新计算最大值,您可能会发现自己得到一个索引超出范围异常。我认为这是一种情况,因此必须加以考虑!很难把它标记为正确的。我喜欢你的节目
for ($i = 0; $i < strlen($key); $i++) {}