@haskellru

Страница 1440 из 1551
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 раза

Dmitry
06.09.2018
00:30:39
Вот тут написано: https://kouzdra.livejournal.com/912059.html

Проще говоря, надо "отщепить" от мира массив, in-place мутировать его, потом влить обратно в мир.

При этом, как я понял, под капотом отщепление и вливание может тоже быть in-place

Alexander
06.09.2018
00:57:29
При этом, как я понял, под капотом отщепление и вливание может тоже быть in-place
Ну это с линейными типами. А без линейных типов никак, ибо ссылочная прозрачность нарушается.

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
Кстати, а компилятор не способен ли определить, что к какому-то объекту в памяти доступ только с одного места? Ну и заменить все операции на in-place.
Ну собственно линейные типы позволяют определить, что доступ к какому-то объекту в памяти есть только из одного места. Без этого по идее нужно делать какие-то эвристики и на их основе магическим образом вычислять это.

Oleg
06.09.2018
01:19:00
если бы в котлине были HKT и тайпклассы, меня бы в скале не было.
Предположительно твоё отсутствие в скале привело бы к её уничтожению?

В статьях про секвенции об этом норм написано

Только не найду в каких

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

Он уже лучше для всех, кто в скале ради лучшей жавы

А будет ещё и лучше для тех, кто пишет фп

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

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

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

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

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
А это точно легально? С ST не может быть ситуации когда ссылочная прозрачность будет утеряна? Ну например изменение чего-то в двух разных местах?
не может, только если при оттаивании и заморозке копировать, т.е. код на ST будет копировать массивы лишний раз, так что фактически всякие ф-и так написанные опасно замораживают/размораживают то что можно, по мнению программиста чтоб вся функция не стала опасной

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

Oleg
06.09.2018
08:27:15
Так State a может быть спокойно скопирован. При этом ссылочную прозрачность гарантирует иммутабельность. Как гарантии ссылочной прозрачности достигаются в ST без линейности?
Ключевое отличие, что слой ST даёт тебе разрешение на мутабельные действия, включая создание и изменение ссылок и массивов разом. Разделить возможности: дать ридонли к этому, мутабельный к тому, возможность создать то и удалить сё, - довольно сложно. Имея только интуиционисткие типы крайне сложно отследить, что не протекают разрешения. Можно придумать коммутирующие слои ST монад, но вводить отдельный слой для каждой переменной - затруднительно. Если дать возможность удалять, после удаления ссылки массива запретить чтение/изменение опять же крайне сложно. С линейными ты можешь таскать изолированные капабилити для каждого действия с каждым мутабельным объектом.

Alexander
06.09.2018
08:34:10
с IndexedMonad можно сделать более хитрые правила

в общем-то с IndexedMonad вполне возможно можно эмулировать линейные типы

но писать код печально будет

т.е. в тайплевел состоянии будет лежать список (s и информации о типе)

но там будет такой ад, что мне даже представлять не хочется

Oleg
06.09.2018
08:37:07
в общем-то с IndexedMonad вполне возможно можно эмулировать линейные типы
Ну да, если ввести вообще вручную моноидальные категории любой формы и композить вручную. Это как будто пишешь вручную на IR

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

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

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

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
лень, хаскель же

время не пришло)

Страница 1440 из 1551