Форум — Talks Бенчмарки parallel-rust против c++ c++, rust 0 1 https://parallel-rust-cpp.github.io/introduction.html Для Ъ. Ржавые пока сливают, но не так чтоб уж совсем. Ссылка
А что сказать-то хотели, что Rust компилит в код с практически таким же перформансом, как и С++? Вот это поворот! seiken ★★★★★ (08.11.19 18:42:11 MSK) Ссылка
так язык-то один: llvm, логично, что перфоманс будет примерно одинаков next_time ★★★★★ (08.11.19 21:28:52 MSK) Ссылка
Да даже не важно что он на 10 процентов медленее, важно чтл у него вырвиглазный синтаксис и нет ооп. bonta ★★★★★ (08.11.19 22:49:10 MSK) Ссылка
Открываю сначала v0, там вроде код нормальный растовский. Открываю v7… #[inline] pub fn z_encode(x: u32, y: u32) -> u32 { let odd_bits = 0x55555555; let even_bits = 0xAAAAAAAA; unsafe { _pdep_u32(x, odd_bits) | _pdep_u32(y, even_bits) } } или for (&d0, &t0) in vd_row.iter().zip(vt_row) { let d2 = simd::swap(d0, 2); let d4 = simd::swap(d0, 4); let d6 = simd::swap(d4, 2); let t1 = simd::swap(t0, 1); tmp[0] = simd::min(tmp[0], simd::add(d0, t0)); tmp[1] = simd::min(tmp[1], simd::add(d0, t1)); tmp[2] = simd::min(tmp[2], simd::add(d2, t0)); tmp[3] = simd::min(tmp[3], simd::add(d2, t1)); tmp[4] = simd::min(tmp[4], simd::add(d4, t0)); tmp[5] = simd::min(tmp[5], simd::add(d4, t1)); tmp[6] = simd::min(tmp[6], simd::add(d6, t0)); tmp[7] = simd::min(tmp[7], simd::add(d6, t1)); } В итоге получили картину: как от раста не оставить раста maxis11 ★ (09.11.19 02:47:09 MSK) Показать ответы Ссылка
Ответ на: комментарий от maxis11 09.11.19 02:47:09 MSK Не ну а чо ты хотел. Весь оптимизированный по самое ололо код обычно выглядит именно так. Ну и тащем-то здесь только unsafe выбивается. kirk_johnson ★☆ (09.11.19 03:32:55 MSK) Последнее исправление: kirk_johnson 09.11.19 03:33:57 MSK (всего исправлений: 1) Показать ответ Ссылка
Ответ на: комментарий от maxis11 09.11.19 02:47:09 MSK А С++ версии как тебе? v0 v7 То что этот студень переписал лабу на раст это пофиг. Главное что он там указал в ссылках слайды оригинальной лабы: http://ppc.cs.aalto.fi/ch2/ Там можно кое-что почитать про оптимизации, так то интересно. v0 и v7 в 36 раз по скорости отличаются в пользу v7. fsb4000 ★★★★★ (09.11.19 10:48:53 MSK) Последнее исправление: fsb4000 09.11.19 10:53:30 MSK (всего исправлений: 1) Ссылка
Ответ на: комментарий от kirk_johnson 09.11.19 03:32:55 MSK Там один unsafe и есть: simd Видимо потому что каждая функция отсюда unsafe в rust: use std::arch::x86_64::*; // Intel SIMD intrinsic mappings fsb4000 ★★★★★ (09.11.19 10:56:26 MSK) Показать ответ Ссылка
Ответ на: комментарий от fsb4000 09.11.19 10:56:26 MSK Экспортируются они как safe. kirk_johnson ★☆ (09.11.19 11:01:36 MSK) Ссылка