Anonymous
Да. Приложение более высокого уровня. Для исполнение с отсроченным таймером
big
друзья, а есть крейт для массивов с thin pointer’ом?
Vladimir
thin это обычные?
big
да
Vladimir
ты имеешь ввиду сишных масивов шоли
Vladimir
там же поидее "кто как хочет, так и пишет"
Vladimir
т.е. размер хранят как попало, но поидее ты можешь в бокс конвертнуть ансейфно
big
да, мне хотелось бы что-то уже готовое. Ансейф всегда успеется ведь )
Сережа
а вот в го такой подход считается ущербным, все есть в стд либе, если чего то не хватает - напиши под задачу, а не используй текущую абстракцию для всех возможных случаев
big
там че карго нет?
big
боксед слайс лучше, у меня вектор 24 байта, БС - 16 байт. Но мне нужно дожать до 8 байт
big
поэтому там нужно будет чето свое придумать
Vlad
я не думаю что есть иде которое из коробки понимает о карговских тестах, но скорее всего можно просто обычный бинарь попросить запустить, и всё должно быть ок
Не могу точно сказать, но вообще планируется в ближайшие пару месяцев по хардкору дебаггером заняться. Там это, конечно, будет в списке
Vladimir
боксед слайс лучше, у меня вектор 24 байта, БС - 16 байт. Но мне нужно дожать до 8 байт
ну а как ты дожмешь до 8 байт, если тебе нужно размер хранить где-то?
big
мне достаточно чтобы поинтер был 8 байт.
big
Поэтому я могу упаковать размер массива в сами данные за поинтером.
Vladimir
Ну тот же размер будешь хранить где-то внутри массива, так себе идея
Tim
https://github.com/rust-unofficial/awesome-rust#logging
Tim
насколько я понимаю тут собраны наиболее популярные
Marat
env_logger вроде все используют
Marat
А нет, там же разделено, есть log, который фасад
Marat
И там у него разные реализации есть
Marat
https://github.com/rust-lang-nursery/log
Loyd
Раскол в логировании удручает, на самом деле
Loyd
Также хотелось единый логер
Loyd
Но нет, нахуячили несовместимых
Loyd
Раньше удобно было: взял log и все норм
Loyd
Секс сидишь, выбираешь
Anonymous
логгер в стд when
Loyd
Разделение на реализацию и интерфейс это прям бомба
big
Ну тот же размер будешь хранить где-то внутри массива, так себе идея
У меня задача такая. Есть enum A, в нем все варианты маленькие, кроме одного - он содержит Vec. enum A используется множество раз (десятки, сотни тысяч, милионы) в какой то структуре данных. И этот вектор не изменяется. Поэтому достаточно выгодно сократить этот вариант и это должно помочь с размерами этой структуре и скоростью выполнентя
Loyd
Имхо, наличие Vec (куча) куда большая проблема
Vladimir
тогда почему б тебе не хранить просто Box<Vec<..>>
Loyd
Кек
Loyd
Хотя, может там редко вариант используется
Vladimir
ну я так понял вектор это псевдокод
Vladimir
и он явно уверен что в копировании енама просадка производительности
Vladimir
в чем я конечно сомневаюсь
Loyd
Фига себе уверенность
Vladimir
о, еще можешь Box( struct DST{ size:usize, arr:[] } )
Vladimir
это ж поидее в расте можно
Vladimir
нет
почему?
Vladimir
аллокаторов нету?
big
Имхо, наличие Vec (куча) куда большая проблема
аллокация один раз, чтение много раз
分解物質
Vladimir
ну и что
分解物質
о, еще можешь Box( struct DST{ size:usize, arr:[] } )
это Vec но только без cap — экономия одного usize на каждую инстанцию
Loyd
аллокация один раз, чтение много раз
кешмисс у тебя тоже один раз?
Vladimir
это Vec но только без cap — экономия одного usize на каждую инстанцию
кстати там сайз даже не нужен отдельной переменной, но да это всеравно будет 128 байт
Loyd
99% что затык всё-таки не там
big
так друзья, вот конкретная проблема
big
https://github.com/paritytech/parity-wasm/blob/9330a39ac12e753899629887555c789063a72a4e/src/elements/ops.rs#L116
Loo
возьмите уёбищный слог
Loo
и страдайте. чо вы
big
это опкоды, васм инструкции декодируются в эти Opcode. Получается каждая инструкция имеет размер максимального из вариантов этого Opcode.
Loyd
Кешмисс не один раз)
big
Сейчас каждая инструкция весит 36 байт, как раз таки из-за Vec в BrTable
big
BrTable — это довольно таки редкая инструкция, так что все равно что там будет внутри
big
таким образом, если уменьшить с 36 до 16 на инструкцию, мы сможем как раз таки больше инструкций уместить в кеш линию
big
количество инструкций, как я уже говорил может быть от тысяч до сотен тысяч до миллионов.
big
так что очевидная оптимизация — это как раз таки вынести Vec<> за скобки
Ivan
есть log, он предоставляет стандарное API для логгирования (в том числе удобные макросы), но сам ничего никуда не отправляет чтобы реально что-то куда-то писать, существуют отдельные бэкэнды для log, например - log4rs
Ivan
+ вот: http://www.arewewebyet.org/topics/logging/
Алексей
а щас нету
сейчас же ты тоже админ
Kerrigan
чото я не понял, я могу передать ссылку на метод или мне городить что-то типа |x| SomeStruct::method(instance, x) ?
Vladimir
Выпросил)
Так он не админ вроде
big
угу
Vladimir
За алминку
big
могу эфира
Loo
нет спасибо
Vladimir
Плюс
Loo
я в этом не учавствую