Вот это меня натолкнуло на мысль "взять всё и поделить"В смысле, если алгоритмы похожи, значит время выполнения одного теста относительно другого должно отличаться примерно в одинаковое число раз для разных Бейсиков, так? То есть можно поделить скорость в каждом из тестов на скорость в том тесте, которому мы доверяем больше всего, например в BM3 (желательно, чтобы скорость в выбранном тесте не была слишком маленьким числом, потому что наверняка в этом случае ошибка измерения больше). После этого можно построить график относительной скорости. Если у разных Бейсиков похожие реализации, то линии графиков будут лежать рядом или даже совпадать.
В качестве опорного я взял результат 3-го теста, так что там всегда единица. Получилось вот что: Бейсики для 8080 правда очень похожи. Я даже потерял линию для "Апогея БК-01", так как она совпала с линией для "Корвета" - похоже это один и тот же Бейсик. У Бейсиков для 6502 заметный разнобой в тестах BM1 (в 2 раза) и BM8 (в 4 раза). У Бейсиков для Z80 более менее совпали только 4 и 5 тесты, в остальных разброс большой. А уж у PDP-11 и того хлеще. Общую картинку я не стал рисовать - такой телефонный кабель получается, что ничего не разберешь.
Кстати, становятся наглядно видны особенности Бейсиков типа ускорения за счёт перевода констант в плавучку заранее в BM4, медленная работа с массивами в BM6 или оптимизация трансцендентных функций в BM8.
У меня ощущение (возможно ошибочное), что Вы как-то странно смотрите на измерение скорости - без учета реального выхлопа программы.
Программу на ассемблере я привел не в качестве теста, а примера того, что в основном Вы измеряете работу интерпретатора Бейсика. Для решения поставленной задачи (сложить 100 чисел) нужно где-то 3800 тактов для Z80. Но на Бейсике эта задача решается раз в 100 медленнее (или 10, если есть поддержка целых чисел). Остальные 90-99% времени выполняются алгоритмы, которые к решению задачи не имеют отношения. Ну, за исключением самых "тяжелых" тестов.
Бенчмарки же практически всегда реализуют либо конкретный алгоритм, либо смесь инструкций, характерную для определенной задачи. Например, смесей Гибсона было 8 штук (чаще использовались деловые и научные). А на суперкомпьютерах решают в основном системы уравнений, поэтому и тесты там на решение уравнений (LINPACK). А пытаться сравнивать ассемблерную программу, реализующую алгоритм интерпретатора Бейсика, с ассемблерной программой, реализующей любой другой алгоритм просто некорректно.
![]()





В смысле, если алгоритмы похожи, значит время выполнения одного теста относительно другого должно отличаться примерно в одинаковое число раз для разных Бейсиков, так? То есть можно поделить скорость в каждом из тестов на скорость в том тесте, которому мы доверяем больше всего, например в BM3 (желательно, чтобы скорость в выбранном тесте не была слишком маленьким числом, потому что наверняка в этом случае ошибка измерения больше). После этого можно построить график относительной скорости. Если у разных Бейсиков похожие реализации, то линии графиков будут лежать рядом или даже совпадать.
Ответить с цитированием