@proGO

Страница 1251 из 1674
Andrey
23.02.2018
16:09:08
Daniel
23.02.2018
16:09:26
правильно - оно от определения правильного зависит

с моей точки зрения "правильно" - это хорошо структурированный код

чтобы я мог происходящее понять прочитав как можно меньше

Google
Daniel
23.02.2018
16:10:40
а страх перед накладными на вызов функции - это совсем не правильно

Vladimir
23.02.2018
16:10:47
@avquantex Го не про мега скорость

Го для тех силучаев когда хочется быстрее питона )

Andrey
23.02.2018
16:10:55
те задачи, для которых go, не предполагают крохоборства
Есть где то надпись что "го предназанчен тоьлко для микросервисов с большим и жирным процом и кучейпамяти"?

Daniel
23.02.2018
16:11:17
нет, но это от скромности

Andrey
23.02.2018
16:11:33
по сокрости го в 2 раза медленее си

Daniel
23.02.2018
16:11:35
на самом деле - да, для взрослых процов с кучей памяти

Vladimir
23.02.2018
16:11:35
@avquantex у Го просто есть веселый пожитатель скорости - GC :)

Andrey
23.02.2018
16:11:40
ну в среденм

Vladimir
23.02.2018
16:11:45
там где он просыпается происходит трэш и угар

как впрочем в любом языке с GC

Andrey
23.02.2018
16:12:05
да вроде же говорили про 100мкс

Google
Vladimir
23.02.2018
16:12:13
да вроде же говорили про 100мкс
ну так оно зависит от )

Daniel
23.02.2018
16:12:15
это пауза

там помимо паузы есть че поделать

Vladimir
23.02.2018
16:12:33
авторы гошечки оптимизировали gc под маленький stop to world

Andrey
23.02.2018
16:12:35
в общем пока мне в моих задачах GC не мешал

Vladimir
23.02.2018
16:12:43
а вот сборка мусора по сути идет в фоне

Vladimir
23.02.2018
16:13:00
итого на краевых случаях (десятки ГБ памяти) gc может жрать больше ресурсов чем приложение

Daniel
23.02.2018
16:13:02
Vladimir
23.02.2018
16:13:13
Это было давно.
но ничего принципиально не поменялось с тех пор

они давно обещают request oriented gc

Andrey
23.02.2018
16:13:35
но ничего принципиально не поменялось с тех пор
Они трубили во всю что удбрали стопмир

Vladimir
23.02.2018
16:13:35
но пока он не случился

ты с джавой и g1 кажется путаешь

Andrey
23.02.2018
16:13:51
в 1,5 кажется

Daniel
23.02.2018
16:13:53
Vladimir
23.02.2018
16:13:58
в 1,5 кажется
ооо, нет

они в 1.5 переписали все на Го

и уменьшили паузы

Google
Andrey
23.02.2018
16:14:14
даже вьюков про это говорил

Daniel
23.02.2018
16:14:19
не говорил

точно не говорил

Andrey
23.02.2018
16:14:50
Эм.. даже не хнаю что сказать. Неужели я жестоко ошибался?

Daniel
23.02.2018
16:14:50
stop the world делается, и работы ведутся в направлении уменьшения его

Vladimir
23.02.2018
16:15:05
@avquantex там обычный mark-sweep

Daniel
23.02.2018
16:15:10
и он уже довольно маленький

Vladimir
23.02.2018
16:15:12
ничего нового в Го не появилось с момента его создания

Andrey
23.02.2018
16:16:07
кстати кажется понял зачем они проверку сделали.

Andrey
23.02.2018
16:16:22
чтоыб не идти до 7 байта чтобы потомт поянть что надо паниковать

Andrey
23.02.2018
16:16:54
оптимизация. Вы не разбрасывайтесь тактами ?

Vladimir
23.02.2018
16:17:04
оптимизация. Вы не разбрасывайтесь тактами ?
преждевеременная оптимизация

к тому же она ухудшает ситуации когда все ок

Andrey
23.02.2018
16:17:59
других мыслей у меян нет почему

Vladimir
23.02.2018
16:18:07
ну скорее всего ты прав

Daniel
23.02.2018
16:18:16
чтоыб не идти до 7 байта чтобы потомт поянть что надо паниковать
поменять порядок заполнения массива, и не надо будет идти. но я бы вообще binary.BigEndian.PutUint64() использовал, а не писал это вот

Google
Olzhas
23.02.2018
16:18:58
забавно, с проверкой границ код гораздо медленнее

Daniel
23.02.2018
16:19:06
а?!

Vladimir
23.02.2018
16:19:54
Не совсем понял ход вашей мысли
в стандартной библиотеке уже есть код который делает то же самое

притом у него в отличии от того что написано выше есть шансы быть написанным например на асме

Daniel
23.02.2018
16:20:07
func (littleEndian) PutUint64(b []byte, v uint64) { // _ = b[7] // early bounds check to guarantee safety of writes below b[7] = byte(v >> 56) b[0] = byte(v) b[1] = byte(v >> ? b[2] = byte(v >> 16) b[3] = byte(v >> 24) b[4] = byte(v >> 32) b[5] = byte(v >> 40) b[6] = byte(v >> 48) }

Admin
ERROR: S client not available

Vladimir
23.02.2018
16:20:14
с каким-нибудь симдом

в Го вроде рудиментарная есть

Daniel
23.02.2018
16:20:47
Andrey
23.02.2018
16:21:08
ониже массив оп разному заполняют

функции бил и литтл

Daniel
23.02.2018
16:21:50
такое кстати сломает автовекторизацию если таковая есть
в современном мире вообще-то не сразу поймешь, отимизироал ты код, или, наоборот, ухудшил

Andrey
23.02.2018
16:23:21
ксттаи предложите оптимизацию для бинари. Если заполнять с конца

Daniel
23.02.2018
16:23:21
и тут до меня дошло

Michael
23.02.2018
16:23:30
по gc такой интересный issue есть https://github.com/golang/go/issues/17503

Google
Michael
23.02.2018
16:23:59
1.11 обещает быть интересной

Daniel
23.02.2018
16:24:25
и тут до меня дошло
это же как раз https://golang.org/src/encoding/binary/binary.go?#L81 и есть!

Andrey
23.02.2018
16:24:30
а 2.0 ещё итереней

Vladimir
23.02.2018
16:24:43
и тут до меня дошло
BenchmarkV1-4 2000000000 0.43 ns/op BenchmarkV1-4 2000000000 0.56 ns/op BenchmarkV1-4 2000000000 0.40 ns/op BenchmarkV1-4 2000000000 0.38 ns/op BenchmarkV1-4 2000000000 0.40 ns/op BenchmarkV2-4 2000000000 0.44 ns/op BenchmarkV2-4 2000000000 0.44 ns/op BenchmarkV2-4 2000000000 0.38 ns/op BenchmarkV2-4 2000000000 0.38 ns/op BenchmarkV2-4 2000000000 0.39 ns/op

Vladimir
23.02.2018
16:24:54
V2 - это оригинальный с _ =

а V1 как модифицированный

Dima
23.02.2018
16:25:02
/leave

Michael
23.02.2018
16:25:29
а 2.0 ещё итереней
её ж не будет

Andrey
23.02.2018
16:25:52
по этому я и не понял про биг и литтл. Однго вметсто второго нельзя использовать для оптимизации как вы написали. Они по разному массив заполняют.

Daniel
23.02.2018
16:26:12
я написал с подъебкой

но получилось, что сам себя того :)

Andrey
23.02.2018
16:26:22
но я думаю законтрибьютить вашу идею было бы правильным

Daniel
23.02.2018
16:26:51
а вот владимир померял, и, похоже, их вариант быстрее

массив оказывается в кеше, видимо

Vladimir
23.02.2018
17:05:45

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