Ранее…

В последнем выпуске мы сравнили производительность реализации языка Monkey для «Go и Crystal.

Получение обратной связи

Сообщество Crystal дало мне несколько отзывов о моем предыдущем посте, и я пообещал предоставить обновленную информацию.

О макросах

Макросы, объявленные в родительском классе, оцениваются в подклассах, поэтому моя исходная реализация:

Можно заменить на:

Об эталонных показателях веб-фреймворка TechEmpower

Я ошибочно утверждал, что эталонные тесты TechEmpower Web Framework не включают фреймворки Crystal.

Я был неправ. Есть несколько фреймворков Crystal, но их сравнение напрямую с Go Frameworks все же медленнее. К этому следует относиться с долей скептицизма, так как последнему тесту почти год. С тех пор и Go, и Crystal, и их соответствующие фреймворки выпустили несколько новых версий.

On Slice(UInt8) vs Array(UInt8)

Самая большая обратная связь от сообщества была связана со структурой данных байт-кода Monyet. Я использовал Array(UInt8), который эквивалентен UByteArray в Kotlin, но, по мнению сообщества, я должен использовать Slice(UInt8), который даст мне поведение, аналогичное Go.

Одна из проблем такого подхода заключается в том, что в справочнике по языку вообще нет документации о том, как использовать Slices (Есть запись в API). Однако, после некоторой борьбы, я, наконец, смог осознать эту концепцию.

Но имейте в виду, что Slice не является Array и некоторые методы отсутствуют, например, для + вам нужно написать собственную эквивалентную версию.

Помимо этого небольшого предостережения, срезы значительно улучшают читаемость и когнитивную нагрузку по сравнению с моими версиями Cache/Offset.

При этом версия Offset по-прежнему быстрее, чем версия Slice, но ненамного (от 6 до 10%).

Заключение

Мне понравилось проводить время с Crystal, я обязательно вернусь в будущем (у меня есть пара хороших идей для новых проектов). Я предпочитаю Crystal, а не Go, но на данный момент, для моего конкретного случая использования, Go имеет явное преимущество в плане производительности.

В будущем у нас будет еще одна запись на другом языке. Увидимся в следующий раз.

Приложение не по теме

Crystalline — красивая песня группы synthwave The Midnight.