пятничное спецолимпиадное

топ 100 блогов thedeemon02.08.2024 Чё-то потянуло меня на прошлой неделе опять посмотреть на язык Swift и попробовать на нем пописать. Меня интересовало каково это жить, когда всякие массивы и прочие структуры данных это value типы с copy-on-write. Но обнаружил, что сам язык сейчас выглядит весьма симпатично по своему набору фич: тут тебе и обычные классы и структуры, и алгебраические типы с паттерн матчингом, и multiparameter type classes, и всякие мелкие удобства. Думал, что бы такое написать, вспомнил, что давно хотел реализовать Byte Pair Encoding и натравить на enwik8 (100 MB старого дампа английской википедии). Написал. Потом думаю: а интересно сравнить насколько этот Свифт тормозной по сравнению с другими языками. Правда, программа тут получилась такая, где его потенциальные проблемы с подсчетом ссылок и реализацией генериков себя не проявляют, а все упирается в скорость хэш-таблиц и optional/nullable типов. Взял Claude.ai и напильник, и напилил переводы одной и той же программы на восьми языках. И получилось местами довольно любопытно, особенно неожиданно то, что Свифт всех обогнал. Я обычно на JVM-targeted языках не пишу, и допускаю, что что-то или все сделал или запускал неправильно, хотя вроде бы перевод получился довольно прямой, и что в нем не так - неясно. Но в итоге Скала на JVM это какой-то позор. Что Свифт и Раст делают за минуту, то Скала делает за 15. В пять раз медленнее Котлина на той же самой JVM! Который вдвое медленнее чем C#, съедая в 15-30 раз больше памяти. Можно, конечно, меньше памяти им давать, так тоже работает, но дольше. С++ тут проиграл многим языкам, ибо стандартные его хэш таблицы совершенно позорные, это давно известно. А заменять кастомными я не стал, везде брал что есть из коробки.

Табличка результатов на файле в 1 МБ:
| Language      | Time, s    | Max Memory, MB |
| ------------- | ---------- | -------------- | 
| Swift         |  57        |   33           |
| Rust          |  59        |   20           |
| C#            |  73        |   75           |
| D             | 132        |   55           |
| Kotlin*       | 162        | 2057           | 
| Kotlin        | 201        | 1070           |
| C++           | 270        |   27           |
| OCaml         | 600        |   90           |
| Scala         | 941        |  977           |

(Kotlin* - это тот же jar файл, но запущенный с другими параметрами JVM)

Исходники и ключи сборки тут: https://github.com/thedeemon/bpe-comparison/

Оставить комментарий

Архив записей в блогах:
Мне 65 лет и я с 13 августа 2023 года  онкологичесчкая больная. А еще я — одинокая женщина (без родственников вообще) А еще я учительница. Английского языка. А еще я  немножко бывший йог. А еще я православная...но пока слаба в вере. А еще я — одесситка, с детства ...
На прошлой неделе я побывала в Таллине благодаря оператору международных автобусных экспресс-линий Lux Express . Они работают в 12 странах Европы и я часто ими колесила по Эстонии. И тут меня позвали в блог-тур? -ДВА ДНЯ В ТАЛЛИНЕ? В НОЯБРЕ! БУДУ! Поводом для поездки стал ...
В комментариях к прошлому моему посту мелькнула фраза: – “операция “Преемник” началась”. Человек практически прямым текстом сказал – он думает, что на место президента в следующем выборном периоде готовят… Наталью Поклонскую. С одной стороны – звучит смешно. Какая из Поклонской ...
Приехал на ВДНХ в надежде что там наконец-то открыли все положенные пять пунктов велопроката. Но хрен там. По-прежнему работает только один, около входа. Позвонил в администрацию, говорю: - Доколе? Доколе у вас будет работать один-единственный пункт велопроката с неразберихой и очередями? ...
И конь хорош, и пацан. И чулки мальчуковые на поясе. Я ещё в раннем детстве такие застал, потом уже колготки появились. Если что - это не я:) Вот о такой машинке я мечтал. Но, увы...:) Только это какая-то ранняя модель, видимо 1950-х годов. В моё время дизайн ...