Скорее, это скорости управляющих конструкций. Есть вопросы.



Posted by Аркадий Водяник on July 13, 1999 at 01:17:49:

In Reply to: Сравнение скорости исполнения отчетов ФБП, 1С posted by Васеленко Сергей, Фирма КАРДИНАЛ on July 12, 1999 at 08:24:16:

Я тестировал пример, предложенный Сергеем:

в ФБП:


a=0
for i=1 to 1000000
a=a+1
endfor

в 1C: - не тестировал;

в Borland Pascal 7.0:


var a :double;
i :longint;
begin
a:=0.0;
for i:=1 to 1000000
do a:=a+1.0;
end.

в Watcom C 10.5 после конвертирования из предыдущей программы
нашим конвертером:


static double A; static int I;

int main(int argc, char *argv[])
{
A = 0.;
for (I = 1; I <= 1000000; I++) A = A+1.;
I--;
return 0;
}

Все было выполнено на P233; результаты, с:


Однопользовательская ultraH для DOS: 35*
Однопользовательская ultraH для Windows: 8
ФБП:Сервер 3.03: 6
ФБП:Сервер 3.04: 1.5
---------------------------------------------
Borland Pascal 7.0: 0.1
Watcom C 10.5: 0.02

Т.e. полученные результаты в целом согласуются с результатами Сергея.
Сергей, правда, не тестировал ultraH для Windows - и пропустил
занятный результат.

Я поставил знак * напротив числа 35, чтобы подчеркнуть, что
это число получено в "голом" DOS, а в Windows NT получилось что-то
около 1 мин. Я пока не могу объяснить столь большую разницу -
(35с и 8с) между версиями для DOS и Windows. Их вычислительные ядра
построены из одного и того же текста одним и тем же компилятором -
Borland Pascal 7.0. Сначала я подумал, что всему виной периодический
опрос клавиатуры в DOS-версии через каждые 1000 команд виртуальной
машины ("а не нажата ли Esc?"). Отключил опрос и получил 20с вместо 35с.
Все равно намного больше, чем 8c в Windows версии. Надо разбираться.

В Сервере 3.04 в компилятор языка ФБП встроен оптимизатор, поэтому
время выполнения примера уменьшилось в 4 раза по сравнению с 3.03.

Как видно, до предела далеко. Компиляция в машинный код (а не в
команды виртуальной машины - как в ФБП) дает более чем на порядок
лучшие результаты. Но, конечно, скорость простых вычислений - это еще
не все. Главное - скорость доступа к данным. В свое время не удавалось
ускорить формы более чем в 2 раза обрабатывая их ФБП:Акселератором,
который генерировал машинный код (эта технология уже не поддерживается).

Вопросы к Сергею: можно ли возпроизвести текст эквивалента на языке 1C?
С какой версией 1C делались опыты?



Пpишедшие ответы: