А.А. Жевак


ОЦЕНКА ПРОИЗВОДИТЕЛЬНОСТИ БК, И НЕ ТОЛЬКО...


Для оценки производительности ЭВМ в настоящее время существует очень много самых различных тестов. Эти тесты с успехом применяются не только для оценки эффективности какой-то отдельно взятой ЭВМ, но также и для сравнения ЭВМ разных типов друг с другом. Они же служат и для сравнения эффективности работы разных программ на одной и той же ЭВМ.

В данной статье публикуются данные, полученные в результате тестирования многих ЭВМ с помощью одной и той же программы приведенной в [1]:

100 REM

110 PRINT "НАЧАЛО"

120 К=0

130 DIM M(5)

140 К=К+1

150 А=К/2*3+4-5

160 GOSUB 230

170 FOR L=l TO 5

180 M(L)=A

190 NEXT L

200 IF K<1000 THEN 140

210 PRINT "КОНЕЦ"

220 END

230 RETURN

Для читателя, знающего Бейсик, эта программа не покажется сложной. Она не занимается решением какой-то серьезной задачи, а выполняет ряд типовых действий, встречающихся в реальных программах (арифметические действия, вызов подпрограмм, организация циклов и т.п.), что дает возможность получить некоторые усредненные данные о скорости выполнения программ.

В этой тестовой программе не содержится специфических операторов, поэтому она выполняется, на всех типах ЭВМ и на всех версиях языка Бейсик.

Для того, чтобы сравнить производительность интерпретирующих и компилирующих языков программирования, можно переписать эту программу на "диалекте" соответствующего языка. Например, чтобы определить производительность "Borland C++", исходный текст программы преобразится так:

#include <process.h>

#include <conio.h>

void subr(void);

void main(void)

{

int k,l;

float a,m[5];

cputs("\nНачало");

k=0;

do

{

k=k+l;

a=k/2*3+4-5;

subr();

for (1=0; 1<5; 1++) m[l]=a;

} while(k<1000);

cputs("\nКонец");

exit(0);

}

void subr(void)

{

return;

}

Для тестирования "Turbo Pascal" исходный текст будет таким:

Program test(output);

Procedure Subr;

Begin

End;

Var

k,l: integer;

a: real;

m: array[1..5] of real;

Begin

writeln("Начало");

k:=0;

repeat

k:=k+l;

a:=k/2*3+4-5;

Subr;

for l: = l to 5 do

m[l]:=a;

until k<1000;

writeln("Конец");

End.

Как видно из приведенных листингов, логика работы программы во всех трех ее "воплощениях" неизменна.

Анализ полученных данных показывает, что самым медленным является калькулятор, а самым быстрым - "Turbo Pascal" на IBM PC/AT. Время решения одной и той же задачи на протестированных средствах вычислительной техники может различаться в 1000 и более раз. Так, например, если на IBM PC/AT на расчет какой-либо задачи уходит почти весь рабочий день (а такой сложности задачи для НИИ самое привычное дело), то дома на калькуляторе вам придется решать эту же задачу... сколько бы вы думали? — год!!! Не верите — посчитайте сами!

Но самым любопытным оказалось, что скорость счета на такой невзрачной с виду ЭВМ как БК-0010 почти в полтора раза выше, чем на... IBM PC/XT. Интересно и то, что IBM PC/AT решает "задачки" только в 5-6 раз быстрее IBM PC/XT.

Еще один важный вывод из полученных данных: при очень сложных задачах с большим количеством вычислений лучше использовать компиляторы. Применительно к IBM PC такой переход позволит получить ответ в 20-80 раз быстрее. Если же задача небольшая, то имеет смысл решать ее в среде интерпретатора: ведь в интерпретирующих языках нет потери времени на компиляцию, и поэтому программа по окончании ввода будет сразу готова к работе. Впрочем, право выбирать, что необходимо для решения задач, всегда остается за пользователем и зависит от его реальных технических возможностей и знаний.

В заключение несколько слов о языке Си. Судя по таблице, скорость счета в "Borland C++" ниже чем в "Turbo Pascal" раза в четыре, но это не следует (как и другие данные таблицы) принимать за эталон скорости. Дело в том, что реальные задачи разные, а тестировалась только одна. Язык Си - это язык управляющий, а Паскаль - вычислительный. В Си легко и просто написать программу (драйвер) для управления оборудованием или устройством, и выполняться такая программа будет очень быстро.

Очевидно, не зря многие операционные системы, написанные на Ассемблере, заново переписывают на Си. Делать же подобное на Паскале нерентабельно.

В следующей таблице приводятся результаты тестирования различных ЭВМ.

Время, [сек] Тип ЭВМ и условия проведения тестирования
0.0635 IBM PC/AT, -12 МГц, Turbo Pascal v.6.0 (*)
0.2378 IBM PC/AT, 12 МГц, Borland C++ v.2.0 (*)
4.9 IBM PC/AT, 8 МГц, BASICA
5.0

IBM PC/AT, 8 МГц, TurboBasic (в режиме интерпретатора)

5.0 IBM PC/AT, 12 МГц, GWBASIC
7.5 IBM PC/AT, 8 МГц, GWBASIC
24.5 БК-0010.01, Бейсик
32.2 IBM PC/XT, 4.77 МГц, BASICA
37 IBM PC
46 Apple IIe
49 Искра-226
51 Tandy Color
56 Электроника НЦ-80-20
92 "Радио-86РК", 1.77 МГц, Бейсик "Микрон"
101 Epson HX-20
104 СМ-1800
> 1200 Casio FX-702P (калькулятор)
8400 "Электроника МК-52"(**)
9900 "Электроника БЗ-34"(**)

Примечания:

(*): измерение времени выполнения программы производилось с помощью специальной программы "Turbo Profiler".

(**): от редакции: эти данные почерпнуты из статьи В. Хмелюка "Самый маленький и самый персональный" //Вычислительная техника и ее применение, N2. — М.: Знание, 1992.

Литература:

1.Черемных C.В.. Гиглавый А.В., Поляк Ю.Е. От микропроцессоров к персональным ЭВМ. - М.: Радио и связь, 1988. Стр.93


Распознавание и преобразование в гипертекст: Владислав М. Антонов

2004 г.