Berkus
ты предлогаешь шаг в циле написать ?
я предлагаю алгоритм правильно реализовать, прочитай википедию можт?
Dmitry
прочитал. И не пойму что у меня не так
Dmitry
@berkus похоже ? fn comb_sort(&mut self) { let reduction_factor: f64 = 1.24; let len = self.len(); let mut gap = len; for _ in 0..len { gap = (gap as f64 / reduction_factor).round() as usize; for j in 0..len - gap { if self[j + gap] < self[j] { self.swap(j + gap, j); } } } }
Berkus
похоже да
Berkus
только ты не ставишь флажок
Berkus
и делаешь всегда O(N²)
Dmitry
и делаешь всегда O(N²)
а. Понял. Благодаря флагу можно уменьшить кол-во проходов ?
Dmitry
А зачем в цикле gap пересчитывать?
он уменьшается до 1го и в итоге обычный пузырь
Berkus
а. Понял. Благодаря флагу можно уменьшить кол-во проходов ?
конечно, если массив уже сортированный то тебе хватит и O(N)
Kirill
он уменьшается до 1го и в итоге обычный пузырь
А где в коде обновление значений, от которых зависит значение формулы?
Dmitry
ага. Круто. А то я попробовал отсортированный и он прошелся как обычно n2
Kirill
gap = gap / factor
Тьфу. Не заметил с телефона %)
Berkus
ага. Круто. А то я попробовал отсортированный и он прошелся как обычно n2
из микрооптимизаций у тебя еще первый проход цикла будет пустой, возможно gap стоит сделать len - 1 или что-то такое
Berkus
а, нет
Berkus
у тебя сразу гэп уменьшится, ок
Dmitry
Dmitry
ну все. Пасиб. Теперь шелла посмотрю
Berkus
swapped возможно, не swipped
Dmitry
Dmitry
а шелл ? По идее тоже самое, но если шаг доходит до 1го я переключаюсь на вставки ?
Berkus
да, там такая же история
Dmitry
Как юзать step_by в итераторе ?
Dmitry
(0..5).step_by(2) так не работает
Антон
(0..5).step_by(2) так не работает
Что именно не работает? Не забывай, итераторы в Rust ленивые
Dmitry
use of unstable library feature 'step_by' ошибку показывает
Alex
надо feature разрешить
Dmitry
что вместо ?
Антон
Переключаешь на ночную версию
Alex
на nightly компиляторе только
Alex
rustup install nightly
Alex
rustup override nightly вроде
Alex
set nightly
зачем если у меня там где можно stable?
კაცი
set - команда
Alex
там override делает на уровне конкретного проекта
კაცი
просто nigthly не позволит
Berkus
пушо только там step_by работает, вроде логично же
კაცი
ошибка будет
Alex
а set глобально не?
კაცი
set для директории
Alex
значит в синтаксисе ошибся, да.
Berkus
это override set
კაცი
там через list поможно посмотреть список
Alex
окей, сорян
Berkus
rustup override set nightly
Alex
потому и дописал вроде )
Αλεχ
стейбл бесполезный просто
Αλεχ
мало того что в него баги завозят, так еще и ничего нет
kitsu
не гарантирую правда, что там есть, но очень вероятно
Berkus
баги быстро правят, не?
ага, и выкатывают в найтли
Alex
ага, и выкатывают в найтли
который потом если баг критичен - выпускается в патч версии стейбла
Berkus
но потом
Alex
но потом
дык в найтли баги - first class citizens
Alex
стейбл хоть тестят
Cat
который потом если баг критичен - выпускается в патч версии стейбла
Нет, в стейбл должно попадать только без багов
kitsu
баги или фиксы?😏
Cat
Если баг нашли в найтли, то он фиксится и выкатывается новый найтли Через итерацию найтли становится бетой, ещё через итерацию бета становится релизом
Dmitry
народ. Как потестить скорость ?
Dmitry
https://doc.rust-lang.org/1.7.0/book/benchmark-tests.html что то не понятно
Αλεχ
Народ, есть такой макрос
Αλεχ
macro_rules! storage_keys { () => {}; ($($name:ident),*) => { storage_keys!(0u8, $($name),*); }; ($count:expr, $name:ident) => { static $name: H256 = H256([$count, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]); }; ($count:expr, $name:ident, $($tail:ident),*) => { static $name: H256 = H256([$count, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]); storage_keys!($count + 1u8, $($tail),*); }; }
Berkus
Αλεχ
можно как-то избавиться от дублирования static $name строчки?
Αλεχ
если убираю предпоследний (хочучтобы свелось к пустому первому правилу) получаю
Αλεχ
error: unexpected end of macro invocation --> src\lib.rs:39:43 | 39 | storage_keys!($count + 1u8, $($tail),*); | ^^^^^ error: aborting due to previous error
Alex
cargo bench уже stable?
Valery
неа
Alex
они планируют его стабилизировать вообще?