@proGO

Страница 1649 из 1674
Evgeny
21.08.2018
12:37:00
"зачем нам ллвм, мы напишем свои бэкенд и ассемблер"
с выходом Go 1.X+1 ваш код станет на 10% быстрее (достает из рукава очередную оптимизацию, добавленную в GCC двадцать лет назад)

Александр
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 треды?

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 чтобы не совпадали с другими таблицами

?

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
Думаю это то что ему нужно, если я правильно понял имятаблицы+ид
Составной ключ может быть из двух полей. Типа, ид + тип связи (таблица 1/таблица 2...)

Александр
21.08.2018
20:21:31
народ по поводу тестов

вот есть условно пакет handlers их надо проверить

как правильно - положить в этот же пакет тесты?

или как то в tests упаковать

(получается с эмуляцией http клиента)

Лемур
21.08.2018
20:23:43
как правильно - положить в этот же пакет тесты?
Я так делаю. Где .go файл там и тест

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 по правильному через эмуляцию сервера делают

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

Pawel
22.08.2018
04:25:32
ну вот asm современный тянет совместимость с asm 8086, и в этой связи от того, что на процессоре происходит, он тоже довольно сильно удален
процессор - это проприетарное ПО. поэтому единственный язык, который к нему близок - это VHDL

Sergey
22.08.2018
05:02:11
Используйте uuid
Спасибо, а для него надо отдельную библиотечку подключать?

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

Vyacheslav
22.08.2018
07:22:11
Спасибо, а для него надо отдельную библиотечку подключать?
вот вам пример, как uuid можно генерить, если ваша БД этого не умеет https://play.golang.org/p/4FkNSiUDMg

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

Страница 1649 из 1674