Programming Taskbook 0


Download 1.62 Mb.
Pdf ko'rish
bet21/71
Sana21.06.2023
Hajmi1.62 Mb.
#1644761
TuriУчебное пособие
1   ...   17   18   19   20   21   22   23   24   ...   71
Bog'liq
Abramyan-Pascal2016-1

200000000 1638 
Время меньше, чем для варианта 1. Следует, однако, учитывать, что в 
варианте 2 выделяется память для хранения всех элементов. Время, требу-
емое на размещение в памяти массива и его преобразование, компенсиру-
ется ускорением при его обработке в цикле foreach, поскольку теперь про-
грамма не генерирует элементы исходной последовательности «на лету», а 
просто читает их значения, размещенные в памяти. 
Модифицируем последний вариант, заменив цикл foreach на цикл for: 
// Вариант 3 
var a := ArrFill(100000000, 1); 
for var i := 0 to a.Length - 1 do 
a[i] := a[i] * 2; 
var sum := 0; 
for var i := 0 to a.Length - 1 do 
sum += a[i]; 
Print(sum, Milliseconds); 
Теперь результаты программы будут следующими: 
200000000 1648 
Таким образом, скорость работы вариантов 2 и 3 совпадает. 
Вернемся к варианту 1. При работе с последовательностями надо ак-
тивно использовать запросы, поскольку именно они позволяют выполнять 
обработку последовательностей наиболее эффективным образом. В нашем 
случае для суммирования элементов последовательности следовало ис-
пользовать не цикл, а специальный запрос Sum: 
// Вариант 4 
var a := SeqFill(100000000, 1).Select(e -> 2 * e); 
var sum := a.Sum; 
Print(sum, Milliseconds); 
Теперь программа выведет следующие данные: 
200000000 1347 
Мы получили наилучшее быстродействие из всех рассмотренных ва-
риантов. Заметим, что запрос Sum можно было применить непосредствен-
но к результату, возвращенному запросом Select, сформировав цепочку за-
просов (это стандартный способ обработки последовательностей): 
// Вариант 4a 
var sum := SeqFill(100000000, 1).Select(e -> 2* e).Sum; 
Print(sum, Milliseconds); 


Download 1.62 Mb.

Do'stlaringiz bilan baham:
1   ...   17   18   19   20   21   22   23   24   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling