转换以下循环的成本是多少?
for ( 0 to n) {
operations of step 1
operations of step 2
operations of step 3
}到下面的2 for循环
for ( 0 to n) {
operations of step 1
operations of step 2
}
for (0 to n) {
operations of step 3
}考虑到这些操作不是简单的简短陈述。
2循环方法的好处将更容易对程序员和代码困难,在性能/时间成本的权衡是什么?
发布于 2022-07-31 16:06:36
如果您想让代码更具可读性,这是不可能的。如果事情必须在一个循环中完成,那么将它们留在这个循环中。将代码分成两个循环会改变执行顺序。
您可以通过将复杂代码提取到方法来增强可读性。特别是当你选择说话的方法名称时。避免使用ExecuteStep1、ExecuteStep2等名称。
for (int i = 0; i < n; i++) {
var data = ReadData(i);
var transformed = TransformData(data);
SaveTransFormedData(i, transformed);
}在实际代码中,您将用一个具体的术语(如Data )替换泛型Bookings。
注意,I/O操作以毫秒为单位,而纯代码操作以纳秒为单位。两者之间有一百万的因素!因此,调用一些额外的方法不会对您造成伤害。
另一个选择是完全避免这个循环,就是将它移到这些方法中,让这些方法接受并返回IEnumerable<T>,并使它们成为扩展方法。然后你可以写:
ReadData().TransformData().SaveTransFormedData();请参见:
发布于 2022-07-31 16:06:12
在第一个场景中,您可以在每次使用迭代变量进行操作时保留它。在第二个场景中,您需要迭代两次循环。因此,执行操作似乎需要更多的时间。此外,它降低了代码的可读性,因为它可能会混淆为什么相同的循环分开。
https://stackoverflow.com/questions/73184770
复制相似问题