
Alexander
05.09.2018
21:06:57
из этих ваших продакшенов
кстати интереснее всего будет вести себя -qm (или как там пин капабилити к тредам зовется) на amd
где топология не как у интела
а что именно в них плохое?
вообще в проектах, которые "тормозят" обычно достаточно настроить RTS, что ускорить в 2-3 раза, если не на порядок

Google

Alexander
05.09.2018
21:08:58
причем Марлоу принимает фиксы, но оооочень медлено
вон -qb0 есть при больших A
и то хорошо
вот кстати хорошие бенчмарки было бы неплохо собрать

A64m
05.09.2018
21:10:55
самое бредовое в это A-эпопее, что сам же марлоу и большие А советует и что для гц надо меньше капабилитей использовать чем виртуальных ядер
но потом сам же не делает такие настойки по умолчанию

Alexander
05.09.2018
21:11:20
ну он почему-то не считает, что это должно быть дефолтом
не знаю
аааа пользователи скажут что программа стала больше памяти занимать
я конечно понимаю, что у него в фейсбуке 128 процессоров на компе
и повышение -A64 приведет к 8Gb оперативки
точнее 16
но обычно пользователю пофиг

Google

A64m
05.09.2018
21:13:10
для машины со 128 ядрами это не очень большая трата памяти

Alexander
05.09.2018
21:13:25
а может у тебя xeon phi
там столько ядер, а памяти не то, чтобы много
но в любом случае, имхо люди со странными архитектурами уж могут опции поменять
это хотя бы ожидаемо
или если хочешь чтобы программа в 10мб работала
в 2018

A64m
05.09.2018
21:17:18
смешно было, когда с 512k до 1m увеличили в 2016

Alexander
05.09.2018
21:18:37
ага

A64m
05.09.2018
21:18:37
тяжело далось решение, наверняка
причем , к примеру, в clr размеры эфемерных поколений вот такие
| | 32-bit | 64-bit |
| ------------------ | ------ | ------ |
| Workstation GC | 16 MB | 256 MB |
| Server GC | 64 MB | 4 GB |
| Server GC > 4 CPUs | 32 MB | 2 GB |
| Server GC > 8 CPUs | 16 MB | 1 GB |
чет на l2 кеш пентиума 2 не ровняются

Alexander
05.09.2018
21:42:39
@lightgreen вот это изменение способно ускорить 95% программ минимум в 2 раза

Alexander
06.09.2018
00:23:42


Dmitry
06.09.2018
00:30:39
Вот тут написано: https://kouzdra.livejournal.com/912059.html
Проще говоря, надо "отщепить" от мира массив, in-place мутировать его, потом влить обратно в мир.
При этом, как я понял, под капотом отщепление и вливание может тоже быть in-place

Victor
06.09.2018
00:35:35

Alexander
06.09.2018
00:57:29

Dmitry
06.09.2018
01:14:02
А, блин, протупил. Вопрос был про фп-БЕЗ-линейных типов :)
Тогда не знаю. Могу только предложить книжку Окасаки про ФП, там предложено много приёмов, как можно без in-place жить.

Google

Dmitry
06.09.2018
01:14:43
Кстати, а компилятор не способен ли определить, что к какому-то объекту в памяти доступ только с одного места? Ну и заменить все операции на in-place.

Alexander
06.09.2018
01:17:50

Oleg
06.09.2018
01:19:00
В статьях про секвенции об этом норм написано
Только не найду в каких

alexknvl
06.09.2018
01:40:09
У меня большое эго конечно, но не настолько. Нет, это просто будет лучше язык и все разумные люди я думаю перейдут.
Он уже лучше для всех, кто в скале ради лучшей жавы
А будет ещё и лучше для тех, кто пишет фп

Yuriy
06.09.2018
05:25:25

Alexander
06.09.2018
05:28:55
runST
А это точно легально? С ST не может быть ситуации когда ссылочная прозрачность будет утеряна? Ну например изменение чего-то в двух разных местах?

alexknvl
06.09.2018
05:29:08
не может быть

Yuriy
06.09.2018
05:30:11

Alexander
06.09.2018
05:34:03
логически это просто оптимизированный State
Так State a может быть спокойно скопирован. При этом ссылочную прозрачность гарантирует иммутабельность. Как гарантии ссылочной прозрачности достигаются в ST без линейности?

alexknvl
06.09.2018
05:34:50
с помощью Rank2 polymorphism

Yuriy
06.09.2018
05:35:09
а на самом деле потому что это IO

alexknvl
06.09.2018
05:36:14
http://homepages.dcc.ufmg.br/~camarao/fp/articles/lazy-state.pdf
2.4 Encapsulation

Alexander
06.09.2018
05:39:21
Спасибо за разъяснения, буду изучать.

Google

A64m
06.09.2018
07:40:28
в векторе правда есть правила перезаписи для некоторых случаев, когда копирование можно выкинуть (когда массив новый создается прямо перед тем как растаивается, к примеру), но это только часть ненужных копирований устраняет

Oleg
06.09.2018
08:27:15


Alexander
06.09.2018
08:34:10
с IndexedMonad можно сделать более хитрые правила
в общем-то с IndexedMonad вполне возможно можно эмулировать линейные типы
но писать код печально будет
т.е. в тайплевел состоянии будет лежать список (s и информации о типе)
но там будет такой ад, что мне даже представлять не хочется

Oleg
06.09.2018
08:37:07

Alexander
06.09.2018
08:37:41
ну там поидее руками мало что будет сделано

kana
06.09.2018
10:00:44
@graninas помню ты писал, что вы как-то стопали выполнение сценария на фри-монадах и сериализовывали список выполненных команд, а потом восстанавливали и продолжали?

Terminator
06.09.2018
10:00:48
@Racsicofalapatorius будет жить. Поприветствуем!

Александр
06.09.2018
10:01:41

kana
06.09.2018
10:01:55
а каким образом вообще это сериализировалось?
там же лямбды

Александр
06.09.2018
10:03:52
Ну, сценарий-то выполняется по шагам, несмотря на то, что он является выражением. Там в стеке интерпретатора был RecorderT, который это позволяет делать. На каждом шагу он либо выполняет монадическую операцию сценария, либо берет ее результат, каковой он был при прошлом выполнении. Там можно "проиграть" записанные результаты в порядке появления. Это, кстати, использовалось еще и для правильного форкания дочерних workflow
Конечно, есть требование, чтобы каждая операция сценария возвращала сериализуемый результат. Точнее, возвращать она может любой, но несериализуемые не могут выполниться по шагам.

kana
06.09.2018
10:04:43
хм, то есть хранились не команды, а результаты?

Александр
06.09.2018
10:04:51
Да

Pineapple
06.09.2018
10:05:18
А есть где посмотреть на код?

Google

Александр
06.09.2018
10:05:42
Код этого проекта приватный
Пример сценария:

Terminator
06.09.2018
10:11:45
@ArtemHlystov будет жить. Поприветствуем!

Александр
06.09.2018
10:15:23
Описание языка:

Denis
06.09.2018
10:16:50
@graninas пиши статью об этом подходе...

Александр
06.09.2018
10:17:16

Denis
06.09.2018
10:19:27

A
06.09.2018
10:20:35
лень, хаскель же
время не пришло)