Разработчик Microsoft перенес векторную базу данных, закодированную на языке ABAP SAP, на ZX Spectrum
Мощный процессор Z80 выполнил код с поразительной скоростью, доказав, что ретро-технологии во многом верны.
Старший инженер-программист Microsoft по имени Алиса Виноградова перенесла базу данных, написанную ею на языке ABAP компании SAP, на почтенный процессор Z80, на котором работает Sinclair ZX Spectrum, и была поражена результатами.
Виноградова назвала свою базу данных ZVDB-Z80 и описывает ее как «векторную базу данных, полностью разработанную на ABAP, призванную предложить независимое решение без опоры на внешние векторные базы данных».
ABAP, также известный как Advanced Business Application Programming, — это язык программирования ERP-гиганта SAP, созданный для написания приложений для своей платформы.
Естественно, код есть на GitHub, где инженер объяснила, что «В прошлом месяце я чистила старый код и заново открыл ZVDB».
Когда Виноградова пересмотрела свое отношение к ZVDB, у нее «было осознание, которое заставило меня улыбнуться».
«ABAP (родился в 1983 году) и Z80 (родился в 1976 году) — практически современники», — написала она. «Они выросли в одну и ту же эпоху вычислений — когда память была драгоценна, циклы считались, а каждый байт имел значение».
Виноградова ценит приемы, которые разработчикам приходится использовать для создания хорошего программного обеспечения, несмотря на эти ограничения.
«Когда я создавала ZVDB, я намеренно применила каждую известную мне оптимизацию Z80», — написала она. «Почему? Потому что эти «старые» методы неподвластны времени — они просто делают современный код невероятно быстрым».
Поэтому она снова использовала их при переписывании ZVDB на языке ассемблера Z80 и утверждает, что при запуске на старом процессоре ее код работал «всего в 3–6 раз медленнее, несмотря на разницу в тактовой частоте в 857 раз».
Виноградова не считает это большим сюрпризом. «Эти оптимизации были рождены для Z80. Они просто оказались универсально оптимальными», — написала она, прежде чем объяснить, почему она считает, что Z80 «по-прежнему выигрывает в 2025 году».
Каждый урок Z80, который я применила к ABAP, остается актуальным на современном оборудовании:
- Таблицы поиска всегда быстрее вычислений
- Z80: Экономит эти драгоценные циклы
- Современный ЦП: упрощенные схемы доступа к кэшу
- Последовательный доступ к памяти — это главное
- Z80: Один цикл вместо четырех для произвольного доступа
- HANA: Колоночное хранилище любит последовательные шаблоны
- Битовые операции универсальны
- Z80: Собственные инструкции ЦП, встроенные инструкции для процессора
- Современный ЦП: SIMD делает то же самое, только быстрее
- Предварительные вычисления превосходят математические вычисления во время выполнения
- Z80: Не могу позволить себе выполнять вычисления
- Современные системы: зачем вычислять то, что можно запомнить?
«Те годы со сборкой Z80 были не просто ностальгией — это были тренировки, обучение», — добавила она. «Тогда каждый цикл имел значение, и знаете что? Каждый цикл имеет значение и сейчас. Масштаб изменился. Принципы — нет».
«Когда я перенесу это на HANA AMDP, это будет еще быстрее. Потому что AMDP использует мой алгоритм, оптимизированный для Z80, и распараллеливает его. «Но основная идея — поиск быстрее вычислений, последовательный доступ быстрее произвольного — появилась ещё в 1976 году».
Её страница на GitHub, конечно же, содержит код, о котором здесь говорится, а также инструкции по запуску на реальном Sinclair ZX Spectrum, онлайн-эмуляторах JSSpeccy или Qaop/JS, либо на локальных эмуляторах Fuse, ZEsarUX, Speccy или Retro Virtual Machine.
Статья переведена с английского языка на русский язык при помощи автопереводчика.
Источник: The Register.
Больше новостей читайте в телеграм-канале SAPLAND: Новости экосистемы.