Обратите внимание на примененный полезный прием оценки скорости вычислений с помощью функции time() без аргумента. Можно подыскать и куда более эффектные частные примеры. Например, сумма 100000 членов 1/k^2 в Maple 8 вычислялась на ПК автора с процессором Pentium 4 НТ 2,6 ГГц за время около 256 с:
>> t := time():add(1/k^2, k=1..100000): TIME=time()-t;
TIME = 255.688
А в Maple 9.5 тот же пример дал время меньше 7 с:
>> t := time() :add(1/k^2, k=1..100000): TIME=time()-t;
TIME = 6.500
В данном случае резкое ускорение вычислений обусловлено применением новой библиотеки целочисленной арифметики — GNU Multiple Precision (GMP).
Доброго обывателя в области математики поражает способность Maple выполнять точные арифметические операции с целыми числами, которые не помешаются в строку. При этом знак \ переносит вывод на следующую строку, а знак % подставляет в строку ввода результат предшествующей операции:
>> 200!+123456789;
031904170324062351700858796178922222789623703897374720 \
000000000000000000000000000000000000000123456789
>> %-200!;
123456789
Но Maple 9.5 идет еще дальше — почти мгновенно (особенно при повторе примера) система вычисляет факториал 100000:
>> t : = time():bigFactorial := 100000!:TIME=time()-t;
TIME = .609
>> t := time():bigFactorial := 100000!:TIME=time()-t;
TIME = 0
Заметно повышена и скорость многих сложных вычислений. Например, на вычисление внушительного определенного интеграла
>> Int( х^n*ехр(-х^n) + Sum( cos(k*x)/k, k=1..n), х=0..1);
в стократно повторяющемся цикле, Maple 9.5 затрачивает чуть меньше трех сотых секунды на каждое вычисление интеграла:
>> t := time():
>for i from 1 to 100 do
> evalf(Int(х^i*ехр(-x^i) + add(cos(k*x)/k, k=0..i), x=0..1)):
>end do:
>TIME=time()-t;
TIME = 2.922
В следующем примере вычисляется время, которое нужно для создания большой матрицы случайных чисел с помощью пакета расширения LinearAlgebra:
>> М := LinearAlgebra:-RandomMatrix(500);
>> timeconsumed = time(type(M, 'Matrix'(algebraic)));
time_consumed = 0.031
Повышение скорости вычислений обеспечено усовершенствованием алгоритмов численных вычислений (например, GNU) и применением подпрограмм национальной группы алгоритмов NAG — общепризнанных в области быстрых вычислений при решении задач линейной алгебры. Кстати, выше была приведена первая программа на Maple-языке программирования, использующая конструкцию цикла.
Читатели книги [23], описывающей предшествующую реализацию Maple 9, обратят внимание на то, что данные по скорости выполнения операций у Maple 9.5 лишь немного отличаются от приведенных для Maple 9, причем в ту или иную сторону. Это позволяет считать их практически равноценными.