Работает в 7 медленнее. Оно и логично. Версия на numba — однопроходная, без выделений памяти на массивы, а это максимально эффективное использование L1 кэша. Векторизованнная версия имеет 4 векторных операции и 4 вспомогательных массива, под которые выделяется память. Даже если некоторые из 4 векторных операций используют simd, то использование лишних массивов и несколько проходов убивают производительность. Ну и сильно сомневаюсь, что функция np.maximum.accumulate имеет simd реализацию, т.к. по своей природе алгоритм последовательный. Сорри за занудство:)
Riskplayer, ну да, лучше использовать numpy где можно, оно там под капотом активно использует simd, но иногда numpy недостаточно. Это просто пример примитивный, а в реальности может быть какая-нибудь стейт машина, которая работает над несколькими массивами.
Riskplayer, Конкретно в этом примере цикл не параллелится, потому что будет гонка, но да, некоторые циклы можно параллелить. Если нужен массовый параллелизм, то лучше использовать taichi с бэкендом cuda или vulkan.
Riskplayer, Не факт!
Взять, к примеру, этот топик: где тут хоть слово про биржу?!
А ведь в топе на главной!
Главное — на жалость бить
Типа «Запор есть, а денег нет. Что посоветуете?» (дарю идею! гарантированный топчик!)