Size: a a a

2020 January 28

V

Vasilii Demidenok in ErlangRus
@maxlapshin у вас есть какие-нибудь эвристики в нифах на тему того, что ниф выполняется долго чтобы сделать yield? или у вас мало-мальски детерминировано время за счёт ограничения чанка работы?
источник

V

Vasilii Demidenok in ErlangRus
enif_consume_timeslice используете или что-то ещё?
источник

ML

Maksim Lapshin in ErlangRus
Vasilii Demidenok
@maxlapshin у вас есть какие-нибудь эвристики в нифах на тему того, что ниф выполняется долго чтобы сделать yield? или у вас мало-мальски детерминировано время за счёт ограничения чанка работы?
таких эвристик нет, внятных замеров не делали, много работы в нифках не гоняем, почти всё сразу уходит в отдельный тред или занимает считанные микросекунды
источник

V

Vasilii Demidenok in ErlangRus
понятно, у меня просто в нифке обход структуры данных, её размер напрямую влияет на время, надо yield-ить периодически
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
@maxlapshin у вас есть какие-нибудь эвристики в нифах на тему того, что ниф выполняется долго чтобы сделать yield? или у вас мало-мальски детерминировано время за счёт ограничения чанка работы?
у ниже же есть рекомендации сколько то микросекунд или переносить на грязный шедулер.
источник

V

Vasilii Demidenok in ErlangRus
мне надо в процессе понимать стоит ли дальше занимать шедулер (не важно грязный или обычный)
источник

ML

Maksim Lapshin in ErlangRus
Vasilii Demidenok
понятно, у меня просто в нифке обход структуры данных, её размер напрямую влияет на время, надо yield-ить периодически
да, у тебя прям выглядит как кандидат на елду =)
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
мне надо в процессе понимать стоит ли дальше занимать шедулер (не важно грязный или обычный)
тогда gettimeofday/timersub )
источник

ML

Maksim Lapshin in ErlangRus
у нас из крупного в нифке есть код, который выполняется несравненно быстрее чем в эрланге (и не хватило сил отпрофилировать, почему)
источник

V

Vasilii Demidenok in ErlangRus
понятно) нашёл вот такое https://github.com/vinoski/bitwise/blob/master/c_src/bitwise_nif.c#L49 видимо что-то подобное буду тоже делать
источник

СИ

Сергей Иванов in ErlangRus
источник

V

Vasilii Demidenok in ErlangRus
да, знаю, но проблема вот тут:
Be aware that enif_schedule_nif, as its name implies, only schedules the NIF for future execution. The calling NIF does not block waiting for the scheduled NIF to execute and return. This means that the calling NIF cannot expect to receive the scheduled NIF return value and use it for further operations.
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
да, знаю, но проблема вот тут:
Be aware that enif_schedule_nif, as its name implies, only schedules the NIF for future execution. The calling NIF does not block waiting for the scheduled NIF to execute and return. This means that the calling NIF cannot expect to receive the scheduled NIF return value and use it for further operations.
источник

V

Vasilii Demidenok in ErlangRus
хотя стоп.. для вызывающего кода ведь разницы быть не должно..т.е. мне надо будет сделать всю работу в той функции что вызывается.
источник

V

Vasilii Demidenok in ErlangRus
ну вот я пока не до конца въехал как это слайс работает, но можно попробовать
источник

V

Vasilii Demidenok in ErlangRus
собственно у виновски как раз оба примитива и используются
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
ну вот я пока не до конца въехал как это слайс работает, но можно попробовать
как рекомендация
источник

V

Vasilii Demidenok in ErlangRus
ага)
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
собственно у виновски как раз оба примитива и используются
по твоей ссылке? он там накрутил чего-то. по идее ты показываешь сколько тебе процентов выполнить осталось, а он тебе отвечает можно заканчивать или лучше прерваться.  сколько выполнить считать в штуках или как ты хотел от запланированного времени
(очень тупая функция которая от твоих процентов считает число оставшихся редукций)
источник

V

Vasilii Demidenok in ErlangRus
ага, спс
источник