metaclass: (Default)
[personal profile] metaclass
http://www.stephendiehl.com/posts/production.html

Про типичную опердень и как она умучает рантайм хаскеля:

A common performance problem is that of many small updates updates to records with large numbers of fields. Records of hundreds of fields are somewhat pathological but in practice they show up in a lot of business logic that needs to interact with large database rows. Too much of this can very noticeable impact on GC pressure by doing allocations on each update.

По ходу, рекорды у них лежат плоскими в памяти и каждый раз при апдейте их надо клонировать. Наверно, заменить их на мапы и прочие словари с деревом в кишках реализации будет проще, не говоря уже о невменяемости рекордов в хаскеле в целом.

И про метапрограммирование: Avoid TemplateHaskell. Half the appeal of Haskell is that its high-level design allows you to avoid huge amounts of useless boilerplate code that you have to write in other languages. If you need compile-time code generation, you’re basically saying that either your language or your application design has failed you.

Как без метапрограммирования нормально делать опердени, где 99% кода - это бойлерплейт по перекладыванию между полями разных объектов и БД - хрен его знает.
Всякие ORM с рефлекшенами и кодогенерацией в рантайме - это то же самое, только медленно и уныло.

Date: 2016-02-22 12:50 pm (UTC)
From: [identity profile] binf.livejournal.com
заменить на мапы с атомами-ключами - это именно то, что нужно. Я щас на кложу переезжаю, там такой подход приветствуется. И макросы в разы проще писать и дебажить, чем в статических языках. Я буквально чувствую, как становится легче дышать
Edited Date: 2016-02-22 04:14 pm (UTC)

Date: 2016-02-22 07:43 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да-да, мапы спасают нереально, фактически для оперденей (а особенно генераторов отчетов) использовать статик типы бесполезно и даже вредно.

Date: 2016-02-23 02:56 pm (UTC)
From: [identity profile] tonsky.livejournal.com
Ну они может от писанины спасают. Но например если в мапе меньше 32 ключей она будет столько же мусора создавать как и рекорд, а то и больше. Или мы о каком количестве говорим примерно?

Date: 2016-02-23 07:06 pm (UTC)
From: [identity profile] binf.livejournal.com
Вообще-то может достигать сотен. Но там фишка не в количестве полей. Мапы нужны чтобы в одном месте задекларировать домен, а потом в идеале из него получать автоматом sql-запросы и весь crud. Из рекордов это не реально сделать

Date: 2016-02-23 07:38 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Мусор хрен с ним, с большего. Мапы удобнее тем, что их объявлять заранее не надо и через них любые дополнительные данные протащить сводится к "добавил там где мап создавался, прочитал там где мап используется".

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 22nd, 2025 08:01 am
Powered by Dreamwidth Studios