производительность Pascal ABC, Python, КуМир и ЯОС

Возможно, этот форум - временный, его задача - собрать сведения о состоянии преподавания программированию в школе.
Ответить
БудДен
Сообщения: 1977
Зарегистрирован: 07.10.18 14:01

производительность Pascal ABC, Python, КуМир и ЯОС

Сообщение БудДен » 23.08.21 02:01

Пробовал простую задачку. Результаты:

Pascal ABC и ЯОС идут примерно вровень. Python - медленнее в 10-50 раз. С КуМиром не понял, показалось, что он не лучше Питона. Однако авторы КуМира сообщали, что он быстрее Питона. Поскольку я не смог прочитать КуМиром файл, пришлось отложить тестирование на попозже.

В любом случае, для задания ЕГЭ где нужно прочитать мегабайтный файл, даже Питон справляется быстрее, чем за секунду. Т.е. пытаться продать ЯОС по той причине, что она быстрее Питона, не выйдет. С другой стороны, у некоторых сдававших экзамен с производительностью Питона были проблемы:

https://habr.com/ru/post/573580/
Во-вторых хоть и характеристики машин были приемлемы, у меня в PyCharm’e при запуске неэффективного алгоритма в конце экзамена ноут стал сильно лагать (что дома такого конечно же не происходило, поэтому о таком я даже не думал). В такой ситуации, по правилам, можно либо поменять место (потраченное на это время не восполнят), либо писать экзамен во 2 день. Это уже был конец экзамена, я потратил больше 3 часов, эмоции, которые я пережил, не хотелось ощущать снова, и решил дописать этот ЕГЭ, да и в целом у меня были готовы ответы, только 30 минут на проверку я потерял из-за этого.
Простейшая программа, по которой я проверял:

Код: Выделить всё

import time
t0= time.time()
print("Hello")
j = 0
for k in range(0,10):
    for i in range(0,50000000):
        j = i - j
    j = j + k
t1 = time.time() - t0
print("Time elapsed: ", t1)
выполняется 55 секунд

Код: Выделить всё

program a; 

var i,j,k:integer;
начало,конец:integer;

begin
  начало := milliseconds;
  j := 0;
 
  for k:=1 to 100 do begin
    for i:=1 to 50000000 do begin
      j := i - j end;
    j := j+k end;
    
  writeln(j);
  writeln('elapsed: ', milliseconds-начало);
end.

В этой программе внешний цикл выполняется в PascalABC .NET 100 раз, а не 11, но эта программа выполняется 15 секунд, т.е. примерно в 30 раз быстрее Питона. Программу для ЯОС я потерял, но там скорость примерно такая же, как у PascalABC, плюс-минус 10%

КуМир

Код: Выделить всё

алг
нач
цел И,Й,К
Й := 0
нц для К от 0 до 0
нц для И от 0 до 50000000 
Й := И - Й 
кц
Й := Й + К
кц
вывод Й
кон
Здесь, напротив, внешний цикл. На новейшем КуМире под Windows (2.1.0-rc11) выполнение заняло 210 секунд, т.е. в 40 раза медленнее Питона и в 1200 раз медленнее PascalABC и ЯОС. Т.е. производительность КуМира всё ещё катастрофически низкая даже по сравнению с Питоном.

Они обещали сделать кодогенерацию через LLVM и приводили совершенно другие цифры (вдвое быстрее Питона), возможно, что она у них и есть, но её нужно подключать как-то по-другому, а в среде работает не она.

БудДен
Сообщения: 1977
Зарегистрирован: 07.10.18 14:01

Re: производительность Pascal ABC, Python, КуМир и ЯОС

Сообщение БудДен » 23.08.21 02:38

Было бы интересно получить замеры скорости 1Скрипта.

БудДен
Сообщения: 1977
Зарегистрирован: 07.10.18 14:01

Re: производительность Pascal ABC, Python, КуМир и ЯОС

Сообщение БудДен » 23.08.21 02:40

Но во всяком случае, понятно, как нужно бороться с Питоном - написать какую-нибудь программку на ЯОС, которая что-то отрисовывает. Разница в 30 раз сразу будет ясно видна.

Аватара пользователя
Лис [Вежливый]
Сообщения: 433
Зарегистрирован: 08.10.18 13:32

Re: производительность Pascal ABC, Python, КуМир и ЯОС

Сообщение Лис [Вежливый] » 23.08.21 19:38

"понятно, как нужно бороться с Питоном"

Неправильно понятно. Один аргумент не даёт победы. Потому что есть другие.
Например: "главное в инструменте - богатство документации по его использованию".
И всё, питон заруливает ЯОС как змея червяка.

БудДен
Сообщения: 1977
Зарегистрирован: 07.10.18 14:01

Re: производительность Pascal ABC, Python, КуМир и ЯОС

Сообщение БудДен » 25.08.21 11:21

По-моему, кто-то опять решил заняться демотивирующей деятельностью.

Ответить