
Alexander
21.08.2018
12:32:35

Evgeny
21.08.2018
12:37:00

Александр
21.08.2018
12:42:56
кто instrumentisto/dep линковал в докер композер?
что-то нихрена

Google

Daniel
21.08.2018
12:46:30
> Go, в сравнении с этим, вообще практически не оптимизирует код.
это известный факт. но на данный момент это не очень важно - большую часть времени go-код проводит в ожидании ввода-вывода.

Evgeny
21.08.2018
12:48:44
ты так пишешь, на нескольких ядрах, словно это каккая-то магия

Daniel
21.08.2018
12:51:11
очень похоже на магию, с учетом кешей и спекулятивного выполнения

Alexander
21.08.2018
12:52:16

Daniel
21.08.2018
12:53:05
пишут, но мало

Evgeny
21.08.2018
12:54:53
ну, ядро linux написали же, одно из самых больших и сложных многопоточных приложений если что

Alexander
21.08.2018
12:55:00
пишут, но мало
да одного энгинкса достаточно, чтобы проверить все кейсы необходимые голангу

Daniel
21.08.2018
12:55:31
давно ли в nginx треды?

Alexander
21.08.2018
12:55:39

Daniel
21.08.2018
12:56:10
я несколько лет не следил, но когда я последний раз заглядывал ему в сорцы - никаких тредов там не было

Evgeny
21.08.2018
12:56:36
ngnix плохой пример, согласен

Alexander
21.08.2018
12:58:50

Google

Roman
21.08.2018
13:01:58
вообще, если хочется оптимизаций, то берем и пишем кусок на си

Artem
21.08.2018
13:03:40
шарп

Roman
21.08.2018
13:05:31

Artem
21.08.2018
13:06:14
а, забей, шутка не зашла


Yuriy
21.08.2018
13:19:36
https://godbolt.org/z/TdELvk дико извиняюсь что пример простой. Более сложный пример нагенерирует столько asm кода, что в нем сложно будет что-то понять. Но у меня и таких примеров полно, потому что я пишу всякие компрессоры/декомпрессоры и часто анализирую выхлоп компилятора.
Go, в сравнении с этим, вообще практически не оптимизирует код. Я молчу про вектроизацию, он обычно даже не инлайнит и циклы не разворачивает.
зы
Я правильно понял, что связь между data locality и SSA была утеряна в недрах "полиэндральных оптимизаций"? ?
Проблема Data Locality и mSSA возникает из-за отсутсвия размерностей и более эффективной упаковки значений - надо дизайнить языки что бы они были верифицируемыми… Тогда в случае с полиэдральщиной возможно сделать Convex Hull и «напихать внутрь» развёрнутых циклов разным образом, - это NP полная задача.
> извиняюсь что пример простой
Это самый простой пример - на практике операнды могут быть разной переменной длинны, может отличаться как и длинна строки так и длинна в битах самого операнда.
В таком случае нужно либо JIT’ить, либо раздувать реализацию… либо опять же нормальную «невырвиглазную» упаковку.
> что в нем сложно будет что-то понять
Там применяются 2-3 SSA трансформации и при skew операциях код моментально становится нечитабельным.
Гляньте где-то слайды докладов по SSA транформациям как там уберается зависимости во вложенных циклах и как потом код выглядит…
С точки зрения компилятора - этот код не содержит зависимостей, но его реальная вычислительная сложность может повысится в 2-3 раза ?
> была утеряна в недрах "полиэндральных оптимизаций"?
Не эт просто «оптимизационная плоскость» - разновидность представления что бы более няшно разворачивать циклы и упаковывать код.
Обычно Skew циклов применяется по умолчанию всеми компиляторами… а вот для нормального Convex Hull просто нету данных (размерностей).
Так появляются всякие RStream’ы для TensorFlow etc, у которых уже есть размерности тензоров и граничные значения - можно хорошо упаковать пайплайн и решить data locality.
Кстати списибо за https://godbolt.org/
Охуїнно в общем.
Я просто думал контрибьютить как то mSSA в golang, но пока нет свободного времени


Evgeny
21.08.2018
13:37:31
А что такое mSSA? Запрос "static single assignment mSSA" ничего не находит. ?
И все же, что имелось ввиду под data locality (eli5, версия для тупых)? В сравнении языков программирования (двух), позволяющих управлять расположением данных в памяти. I'm confused.

Yuriy
21.08.2018
14:29:10
data locality это выравнивание в структурах, выравнивание структур самих структур относительно какой-то страницы, переменная длинна и упаковка структур ETC
Таким образом что бы всё можно было положить в регистры и помещалось в страницы памяти - не было смысла бегать от страницы к странице, и не было TLB miss’ов
Есть ещё Array SSA - более продвинутая форма SSA для устранения зависимостей и развёртывания циклов.

Evgeny
21.08.2018
14:55:57
если это memory ssa, то memory ssa есть в gcc и llvm

John
21.08.2018
15:36:41
Всем привет, можете объяснить как физически работает API Wrapper?

Александр
21.08.2018
15:40:13
@onokonem а вы не знаете кашерный способ сделать throttling для http handlers?
я конечно нашел несколько решений
(ограничить количество запросов в секунду в смысле)
но интересует практическая сторона ?

Daniel
21.08.2018
15:43:32
я делал собственный листенер с тротлингом акцепта

Google

Александр
21.08.2018
15:43:53
тут я нашел какой то golang.org/x/time/rate
но еще не вкурил что за параметры то там
аля - rate.NewLimiter(10, 5)

Dmitri
21.08.2018
15:48:30

John
21.08.2018
15:48:47
Ну это обертка над апи
А как это работает на уровне кода
Есть документация может быть?

Dmitri
21.08.2018
15:52:46
На уровне кода это работает так:
package wrapper
import "api"
func SomeAPIfunc() {
return api.SomeAPIfunc()
}
это, конечно, самый тривиальный случай
вопрос скорее не в том, как оно устроено, а для чего используется
Ну это обертка над апи
короче, для постижения дзен api wrapper'а вот отсюда начинайте:
https://ru.wikipedia.org/wiki/%D0%90%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
это конкретно оно

John
21.08.2018
16:10:23
Спасибо
Начну постигать азы

Roman
21.08.2018
17:16:23
вы когда функции комментируете, как ссылаетесь на параметры?

Sergey
21.08.2018
20:01:56
слушайте а как сделать у gorm уникальный id чтобы не совпадали с другими таблицами
?

Лемур
21.08.2018
20:09:10

Sergey
21.08.2018
20:09:46
И тащить те которые ссылаются на нужный

Google

Sergey
21.08.2018
20:10:38
Проблема в том что у записей разных таблиц они могут быть одинаковыми и возникает путаница

Лемур
21.08.2018
20:12:19
Есть такое понятие как составной ключ, например. Но я тут умываю руки, не совсем понимаю в чем у вас проблема с горм

Pavel
21.08.2018
20:12:38
Сложное описание, но кажется просто разные поля для айди использовать может помочь.

Dmitry
21.08.2018
20:15:46

Лемур
21.08.2018
20:17:01

Александр
21.08.2018
20:21:31
народ по поводу тестов
вот есть условно пакет handlers их надо проверить
как правильно - положить в этот же пакет тесты?
или как то в tests упаковать
(получается с эмуляцией http клиента)

Лемур
21.08.2018
20:23:43

Dmitry
21.08.2018
20:23:56
Вроде рядом положить по правильному
Чем то это было обосновано но я не помню уже чем

Александр
21.08.2018
20:25:09
ну опять надежна сами знаете на кого

Dmitry
21.08.2018
20:25:17
А. Чтобы функции напрямую дергать а не через импорт
Наверно поэтому

Александр
21.08.2018
20:25:33
нууу тут такое
handlers по правильному через эмуляцию сервера делают

Sergey
21.08.2018
20:42:02
большое

Google

Dmitri
22.08.2018
02:34:08
ну и до кучи БД отрефакторить

Pawel
22.08.2018
04:25:32

Александр
22.08.2018
04:59:11

Sergey
22.08.2018
05:02:11

Александр
22.08.2018
05:03:18
Можно отдельную, а можно сделать чтобы база сама генерила (про MySQL не знаю, но постгрес точно умеет)

Sergey
22.08.2018
05:03:48
Хорошо, спасибо

Vyacheslav
22.08.2018
07:22:11

Sergey
22.08.2018
07:46:47

Александр
22.08.2018
08:31:00
https://dba.stackexchange.com/questions/122623/default-value-for-uuid-column-in-postgres