Всегда есть альтернатива для l oop с повторяемостью.
Здесь реализовано logi c Фибоначчи и проверено быстродействие.
import 'dart:math';
double fibSum = 0;
double quesSum = 0;
List<Point> listOfPoints = [Point(0, 0), Point(1, 1), Point(1, 4)];
void main() {
print("before fibonacciLogic: ${DateTime.now()}");
fibonacciLogic(listOfPoints.length);
print("after fibonacciLogic: ${DateTime.now()}");
print("before logicFromQuestion(): ${DateTime.now()}");
logicFromQuestion();
print("after logicFromQuestion(): ${DateTime.now()}");
print("output fibonacciLogic: $fibSum");
print("output logicFromQuestion: $quesSum");
}
fibonacciLogic(int length) {
if (length < 2) {
return length;
}
fibSum += listOfPoints
.elementAt(length - 2)
.distanceTo(listOfPoints.elementAt(length - 1));
return fibonacciLogic(length - 2) + fibonacciLogic(length - 1);
}
logicFromQuestion() {
Point current = listOfPoints.first;
for (var next in listOfPoints.skip(1)) {
quesSum += current.distanceTo(next);
current = next;
}
return quesSum;
}
вывод:
before fibonacciLogic: 2020-04-22 14:39:37.170
after fibonacciLogic: 2020-04-22 14:39:37.172
before logicFromQuestion(): 2020-04-22 14:39:37.172
after logicFromQuestion(): 2020-04-22 14:39:37.173
output fibonacciLogic: 4.414213562373095
output logicFromQuestion: 4.414213562373095
Результат: Здесь логика c, представленная с помощью для для l oop, занимает 2 микросекунды, в то время как Фибоначчи Logi c занимает всего 1.