@proGO

Страница 1528 из 1674
Dmitri
24.06.2018
08:00:33
а как ты это посчитал?
в 8 битах можно хранить число в диапазоне -256...255 в 4-х -: -16..15

in64 - 64 бита

many-faced
24.06.2018
08:01:24
значит, можно поуменьшить

Dmitri
24.06.2018
08:01:45
когда ты говоришь ему value / 256 - он возвращает тупо такой же int64, только убив в нули все, кроме последних 8 бит

Google
Dmitri
24.06.2018
08:02:10
грабли могут, конечно, быть

возможно, он тебе день отрицательный вернет

кстати, да, скорее всего вернет

но там уже сам костыль можешь вставить)

many-faced
24.06.2018
08:02:48
жесть.

хорошо, спасибо большое, пойду попилю.

Dmitri
24.06.2018
08:03:12
попили, удачи тебе)

Кстати, я тебе соврал, знаковые 8 бит - это от -128 до 127

Но на день месяца хватит

А ещё можешь с побитовым сдвигом заморочиться

many-faced
24.06.2018
08:06:42
Dmitri
24.06.2018
08:07:43
во, GetFromHistDate будет, наверное, так выглядеть: func GetFromHistoricalDate(histDate int64) (year int64, month int64, day int64) { year = histDate / (16 * 256) histDate = histDate - year month = histDate / 256 day = histDate % 256 return }

вот так она должна корректно отрицательные годы отрабатываеть

Google
many-faced
24.06.2018
08:11:36
ммм.. нет, чё-т не то

Alan
24.06.2018
08:15:51
/voteban

Dmitri
24.06.2018
08:25:09
ммм.. нет, чё-т не то
ага, чота мутная история с годами вышла)

ща попробую починить

вот такая фигня получается: func ToHD(year, month, day int64) int64 { return year * 100 * 100 + month * 100 + day } func FromHD(hd int64) (year, month, day int64) { year = hd / (100 * 100) if hd < 0 { year-- hd = 10000 + hd % 10000 } hd = hd % 10000 day = hd % 100 month = hd / 100 return }

The
24.06.2018
09:39:27
а дата у нас data переводится?

many-faced
24.06.2018
09:39:41
всё ждал, когда же кто прикопается )

The
24.06.2018
09:40:19
я долго тренирвоал снобизм. зря что-ли?

many-faced
24.06.2018
09:40:22
вы лучше посмотрите не на дату, а на время - воскресенье 9.50, можно не только буквой ошибиться.

Roman
24.06.2018
09:51:06
ну это получается надо заморачиваться самому - сколько там дней в месяце итп
хмм а можно ли хранить дату и инт сдвига года относительно минимального 19хх года? или это сломет верность дат?

Roman
24.06.2018
09:56:27
В исторических датах крайне важно хранить привязку конкретной даты к календарю.

Если только вы уж какой-то совсем простенький справочник не делаете.

Yaroslav
24.06.2018
11:02:54
я имел ввиду что наша эра началась с 0000, а не 1970
А ещё в истории не было нулевого года

За первым до нэ сразу шёл первый нэ

many-faced
24.06.2018
11:04:19
?

Yaroslav
24.06.2018
11:05:21
=)

Roman
24.06.2018
11:26:25
Имеет ли смысл заводить goroutine pool для конкурентной обработки болшого колва запросов? (речь идёт не о HTTP) или просто запускать горутины go handle() ? предполагаю, что в случае HTTP, инициализация обработчика в горутине занимает значительное время и создаёт лишние аллокации и если эдакого overhead'а не имеется просто запускать горутины и не париться?

Google
Pawel
24.06.2018
11:33:01
Зачем усложнять, при чём так зверски? Вы не напишете более эффективный планировщик, чем тот, что есть. Голанг имеено под это заточен изначально

Roman
24.06.2018
11:34:52
Зачем усложнять, при чём так зверски? Вы не напишете более эффективный планировщик, чем тот, что есть. Голанг имеено под это заточен изначально
как я уже написал, скорее всего сама инициализация обработчика является дорогой, по причине чего стоит переиспользовать существующие горутины

если обработчик при инициализации аллокейтит память, то это будет значительно тормозить при постоянном запуске многого колва обработчиков

Pawel
24.06.2018
11:36:34
В таком случае без исходников и метрик вам ни кто ничего вразумительного не скажет

Сомневаю я что скедулер так вот прям алокейтит много памяти чтобы это можно было пробороть без костылей и просадок по потреблению процессора. Ну и вряд ли там вообще возможна какая-то значимая оптимизация без перехода в хардкорный режим ядра

Roman
24.06.2018
11:41:02
В таком случае без исходников и метрик вам ни кто ничего вразумительного не скажет
да исходники то открыты: https://github.com/qbeon/webwire-go/blob/master/serverHttp.go#L66 сейчас работаю над реализацией feature request issue по параллелизации обработки запросов и задумался, а не стоит ли мне в этом случае использовать goroutine pool.. короче скорее всего нужно замерить сколько памяти например тот-же parser выделяет

Dmitry
24.06.2018
11:45:09
че хероку от меня хочет?

https://pastebin.com/6jJwBT7m

Anton
24.06.2018
11:47:43
исходников нет, но подозреваю, что импорта нет для xrich

Pawel
24.06.2018
11:47:56
тут планировщик не при чём, тут дело в коде, который запускается внутри каждой горутины..
может быть вы имеете ввиду просто сделать асинхронщину на event lopp-ах,?

Запускается одна горутина статически, в ней крутится евентлуп в цикле, который принимает сообщения, содержащие таски на вычисление. Вычисляет, передаёт результат в колбэк

Dmitry
24.06.2018
11:49:21
Pawel
24.06.2018
11:50:49
https://pastebin.com/6jJwBT7m
вы инглишь нихт ферштейн? в гугель-переводчик вбейте

Pawel
24.06.2018
11:51:42
че это я злой, я по делу вам говорю

Dmitry
24.06.2018
11:52:43
да есть у меня импорты

и локально работает

я этой хероке не могу указать где мой пакет по видимому находится. а сам он не может определить

Pawel
24.06.2018
11:53:41
значит пакета нет в папке вендор

Google
Roman
24.06.2018
11:53:45
Dmitry
24.06.2018
11:54:19
значит пакета нет в папке вендор
ну его и не будет. это мой пакет. просто он находится в корне , а приложение которое его использует в папке cmd

Pawel
24.06.2018
11:54:22
какой event loop)) мы тут про Go говорим)
обыкновенный. евентлуп для Го вполне норм для многих задач. внезапно.

Roman
24.06.2018
11:55:41
обыкновенный. евентлуп для Го вполне норм для многих задач. внезапно.
в данном случае никакой event loop не нужен, речь шла об оптимизации инициализации обработчиков горутин

мы не в Node.js чтоб однопотоком баловаться

Vasily Romanov
24.06.2018
11:56:42
в данном случае никакой event loop не нужен, речь шла об оптимизации инициализации обработчиков горутин
воркер пул может дать больший контроль над потреблением ресурсов, если говорить в целом

например, если придёт 10к запросов, то мы можем породить 10к горутин и обработка этих запросов сожрёт много памяти

Dmitry
24.06.2018
11:57:23
Admin
ERROR: S client not available

Vasily Romanov
24.06.2018
11:57:45
это канал + пачка горутин

которые обрабатывают задачи, приходящие из канала

Pawel
24.06.2018
11:58:52
я первый раз деп использую
ну тут всё просто. все нестандартные пакеты должны быть в вендор что бы вы не использовали в качестве менеджера зависимостей

Vasily Romanov
24.06.2018
11:58:53
горутины воркеры можно добавлять-удалять первое тупо посредством запуска ещё горутины 2-е через доп канал, куда кладём сообщение о том что горутине надо завершиться

Vasily Romanov
24.06.2018
11:59:09
именно

в этом случае мы эти 10к задач прожуём медленнее, но более контролируемо

ну или можем преаллоцировать сколько надо воркеров

у меня например в 1 сервисе 8к преаллоцированно, с лимитом увеличения до 60к

Google
Roman
24.06.2018
12:00:50
в таком случае workerPool на каждого клиента? или 1 на весь сервер? думаю что если в контексте клиента пул запускать, то это будет быстрее, ибо, как мне кажется, синхронизация доступа к каналу сожрёт много времени если клиентов предположим 10к и каждый из них по 20 запросов херачит

Roman
24.06.2018
12:02:07
работать будет всё - и горутина на запрос, и на клиента, и на сервер
да вот боюсь как бы mutex канала не превратился в I/O bottleneck

Dmitry
24.06.2018
12:02:33
я просто делал godep save ./cmd/.. и оно норм прописывало пути не кладя даже мой пакет в вендор

Vasily Romanov
24.06.2018
12:03:11
mutex profile есть в pprof

Dmitry
24.06.2018
12:03:45
как мне тогда сказать депу чтобы он мой пакет в корне гихаба положил тоже в папку вендор? и зачем мне две копии пакета - в корне и в вендоре?

Vasily Romanov
24.06.2018
12:03:47
в крайнем случае можно шардировать на несколько воркер пулов, но, опять-таки, не факт что даст прирост

Roman
24.06.2018
12:03:59
вот это сложно. евентлуп с одной горутиной, принимающий сообщения, проще и эффективнее
тогда невозможно обрабатывать несколько запросов одновременно на 1 клиенте

чего бояться, мерять надо :)
мерять надо безусловно, но вот предполагаю что, теоретически, atomic int должен быть быстрее чем канал, по которому передаются целые сообщения. ибо канал блокирует во время копирования сообщения и передачи его в горутину а atomic только ин-/декрементит т.е. можно поставить atomic int currentActiveWorkers и с ним работать в обработчиках соединений

хотя...

Vasily Romanov
24.06.2018
12:06:40
вы заморачиваетесь

Roman
24.06.2018
12:06:53
Dmitry
24.06.2018
12:09:25
dep init dep ensure
я это сделал

Pawel
24.06.2018
12:09:50
я это сделал
dep ensure -add github.com/foo/bar

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