Инструменты пользователя

Инструменты сайта


examination:c:question21

Способы повышения эффективности программы

1.

Выбор алгоритма (выбор правильного алгоритма является одним из ключевых моментов оптимизации времени выполнения программы, кроме того может влиять и на объемную сложность) Рассмотрим 2 функции нахождения наибольшего общего делителя 2 положительных чисел

 function NOD (a,b:integer) : integer;
begin
	while a<>b do
		if a>b
		then a:-a-b
		else b:=b-a;
	NOD:=a;
end.
 
function NOD (a,b : integer) : integer;
var r:integer;
begin
	repeat r:=a mod b;
	a:=b;
	b:=r;
	until b=0;
	NOD:=a;
end.
Операция 1 Алгоритм 2 Алгоритм
<> 9 1
:= 5 4
+ 4 0
* 0 1
18 6
2.

Сокращение накладных расходов (при реализации алгоритма различают операторы, управляющие вычислениями, и непосредственно вычисляющие операторы. Операторы , участвующие только в выполнении вычислений рассматриваются как накладные расходы. Примерами могут быть условные выражения, управляющие циклами. Комбинации операторов, используемые всеми частями программы для работы с фрагментами, содержащими накладные расходы) Пример:
Вычислим разложение функции sinx в ряд Тейлора с заданной точностью e.

sinx=x - x^3/3! + x^5/5! - x^7/7! + x^9/9! -….
e=0.0001
s=t0 + t1 + t2 + t3 +….
t0= x
t1= -x^3/3!
t2= x^5/5!
….
S0= t0
Sk= Sk-1 +tk
tk= tk-1* (-x^2/(2k(2k+1)))
k>0

Таким образом, для эффективного метода вычисления необходимо произвести математические преобразования для реорганизации или упрощения формул.

examination/c/question21.txt · Последние изменения: 2014/01/15 08:09 (внешнее изменение)