Anton
Сделал ошибочку, длина массива ссылок 44 байта, но ссылка, допустим 4 байта, тогда 11*33 выйдет В том то и дело, что куча выделит 2048 байт, и 550 потратятся. Куча вроде выделяет блоки размером степени 2ки, потому и считается оптимальным ее так же аллокать.
Oleg
а вот представим, что один мой друг некогда написал такой кот https://gist.github.com/Odomontois/f1ed29ea121564aa009facd0229c5fec но написав его он увидел ,что джавовый аналогичный всё равно гоняет в полтора -два раза быстрее и он такой думает: ЧЯНДТ помогите моему другу, время пошло
分解物質
jemalloc не знает о типах
分解物質
jemalloc это реализация стандартного С malloc()
分解物質
Oleg
Атака клонов
как без клонов?
Oleg
там предполагается, что чаще всего это будут типы навроде i32 или там struct(i32, i32)
Vladimir
делай копи
Сережа
а вот представим, что один мой друг некогда написал такой кот https://gist.github.com/Odomontois/f1ed29ea121564aa009facd0229c5fec но написав его он увидел ,что джавовый аналогичный всё равно гоняет в полтора -два раза быстрее и он такой думает: ЧЯНДТ помогите моему другу, время пошло
я не знаю что там, но там очень много вызово clone и там где джавовый код наверняка передавал ссылки на объекты, мне тут недавно объяснили, что клон это когда дипкопи и дорого (на хипе).
Сережа
ну или аллоцировал быстрее, потому что аллокация из преаллоцированной памяти в жвм
Anton
*куча T> имеется ввиду множество, не heap
Сережа
без клонов если сначала посчитать сколько хипа выделить, в дереве хранить индексы на элементы в превыделенном буфере
Сережа
ну добавлять и удалять элементы будет не здорого конечно же, как и сортировать
Anton
Нафига clone в new, в том то и прикол, что если вызываешь clone, то получаешь 2 объекта, для каждого из которых вызываются drop + копирование памяти. clone зло, это же очевидно
Vladimir
клон специализирован для копи чтоб юзать копи?
Oleg
Я забыл сказать
Oleg
Что я тоже усомнился в клонах
Oleg
И для конкретной задачки переписал всё для конкретных типов
Oleg
Которые были i32 и i32
Oleg
везде был неявный copy, где сейчас clone
Oleg
И получил ускорение на 0мс (из 1200)
Oleg
К сожалениЮ кодфорсес опять лежит или типа того, так что конкретнее сложно рассказать
Vladimir
берешь профайлер
Vladimir
юзаешь профайлер
Vladimir
смотришь на горячие места
Vladimir
показываешь нам, если сам не исправляешь
Alexander
у них ещё и профайлеры работают
Oleg
чьёрт, это мне придётся тесткейзы придумывать
Alexander
небось ещё и iperf
Oleg
а профайлер - это что?
Oleg
--release не забыл?
на сервере компилится, надеюсь, что там не забыто, иначе было бы очень несправедливо
Filipp
Или смешно
Oleg
мало того, переделал в unsafe\глобальный массив
Oleg
не помогло
Loo
смотришь на горячие места
https://pustunchik.ua/online-school/geography/naygaryachishi-miscya-svitu
Anton
ого, тут кто-то кодфорсес юзает.. Эх, как давно это было!
Loo
Oleg
юзает?
Oleg
берешь профайлер
так как профайлер взять?
Vladimir
ты на маке?
Сережа
sudo apt-get install gprof
Oleg
нет
Сережа
некоторые еще valgrindом выделения памяти профилируют
Сережа
оно же все по идее с растом должно работать? gprof и valgrind?
Сережа
системные вызовы одни же
Vladimir
я например опрофайлером с kcachegrind
Vladimir
валгринд вообще виртуалка, под ней всё работать должно. gprof хз, вроде гнушное чет, не факт что без поддержки гцц заведется. системные профайлеры oprof и perf там линуксовый
Anton
Кстати, есть такая трабла. Надо послать юзеру сообщение по TCP с какими-то данными длиною несколько килобайт, допустим. Есть enum сообщений, и этот enum сериализуется bincode. Но не нравится мне следующее: let message=UserMessage(data.clone());//clone?! user. send(message.bincode())//псевдокод. Как можно таки не делать data.clone()? data где-то хранится, и её нельзя move.
Vladimir
делать енум который просит ссылку?
Anton
О, мб сработает! Спасибо. Посмотрим, как там со всякими &'a быть
Ilya
Rc же
Ilya
самое то, копируй до смерти
Alex
Ребята, привет! Если кому интересно - ищем сейчас разработчика на Rust, вот вакансия https://hh.ru/vacancy/23590940
Vladimir
Golang
Vladimir
И сразу в закрепы
Vladimir
Понятно всё с тобой арсен
Alex
Блин, точно про вилку забыли
Vladimir
Микросервисы это ж про хиперледжер?
Alex
Надо с HR проговорить, но платят нормально )
Alex
Там в основном будет вебапп, блокчейн в основном на эфире, так что там наверное Раст на уровне клиента только будет использоваться
Alex
Микросервисы это ж про хиперледжер?
Vladimir
Понятно
Alex
На каком например? )
պլհկ
на го
Маjко
@LooMaclin не распугивай работадателей, пидр
Vladimir
на го
Так они и пишут лол
Vladimir
Просто наверное поняли что в этом чате гоферов больше чем растеров
Vladimir
Вот и объяву закинули
պլհկ
https://spb.hh.ru/vacancy/23283192
Alex
Го мне не нравится излишней просотой. Давно заметил, что простой язык сложно решает сложные проблемы, а сложный - просто. Не нравится дырявая система типов, не нравится Garbage Collection. ООП парадигма в нем убогая, функциональая тоже - ни рыба, ни мясо. Вместе с этим есть конечно есть ряд преимущеста - быстро учится, быстро компилится, больше коммьюнити. Так что мы сейчас взвешиваем все за и против.
Chris
А почему Хаскель в другой вакансии? https://spb.hh.ru/vacancy/23586953
պլհկ
они еще не определились