LINUX.ORG.RU

Правильно ли я пишу на Rust?

 , ,


1

7

Часто мелькает Rust и в новостях, и в темах. Решил попробовать переписать один тест с С на Rust. Для сравнения написал вариант и на C++. На Rust получилось в 4+ раза медленнее, чем на С и в 2+ раза медленнее, чем на C++. Есть подозрение, что я делаю что-то неправильно, но не знаю что. Помогите, пожалуйста, разобраться.

UPD. Мои цифры:

$ gcc c_v1.c -Ofast -march=native
$ ./a.out 3000
16.439091
-287.250083
$ g++ cpp_v2.cpp -Ofast -march=native
$ ./a.out 3000
31.3826
-287.25
$ rustc rust_v1.rs -C opt-level=3 -C target-cpu=native
$ ./rust_v1 3000
71.570172703s
-287.2500833333321
★★★

Последнее исправление: andalevor (всего исправлений: 1)

Ответ на: комментарий от andalevor

На самом деле на всех 3х языках получилось примерно одинаково. Везде использовался ffast-math и О3 так или иначе.

Нет, бездарность нелепая. Код на язык - это код на языке. Код состоящий на 99% из unsafe и ffi растом не является. Ты обосана, шлюха.

К тому же, падаль, где ответ за кукаретинг в мой адрес? Бегом побежала оправдываться.

anonymous
()
Ответ на: комментарий от anonymous

А весь цивилизованный low-level мир, при этом, продолжает использовать проверенные десятилетиями решения в лице C и C++, и смотрит на Mozill'у и все расто-кодло, как на опущенных.

Кстати, смотри как работает пропаганда. ты действительно купился на то, что говнораст и говнозила существуют отдельно от С/С++.

Нет, тут смысл в том, что эти бездарные шлюхи не могут без С/С++ и говнофокс пилится именно на С++, а говнораст всё больше и больше ворует из llvm и(в следствии) С/С++.

На самом деле эти ублюдки опущены дважды. Они блеять, что могут и С/С++ ненужен, но жрут. Ладно бы если они смогли существовать без С/С++, но эта падаль мало того, что в говне. Дак ещё и обосанная С/С++ валяется.

Тут надо аккуратно. ничьё сознание не защищено от влияния пропаганды.

anonymous
()
Ответ на: комментарий от Nereus

Там выше падаль кукарекала, что отвечает мне раз в месяц. На самом деле шлюха врёт, она действительно отвечает раз в месяц, потому что я её раз в месяц спрашиваю.

И действительно, бываю я тут 1-2 дня в месяц, либо вообще по пол года могу не заходить. Есть время/ничего не могу более делать - пишу тут. Нужно пацанам контент генерировать + шлюхи не должны расслабляться + я должен мочь даже в таких условиях втаптывать мразь в дерьмо.

anonymous
()
Ответ на: комментарий от bonta

@andalevor пытается сказать, что это не вырвиглазный код:

*c.get_unchecked_mut(i*n + j) =
	               fadd_fast(*c.get_unchecked(i*n + j),
		                 fmul_fast(*a.get_unchecked(i*n + k), *t.get_unchecked(j*n + k)));

Для сравнения:

C[N*i + j] += A[N*i + k] * T[N*j + k];
goto-vlad
()
Ответ на: комментарий от goto-vlad

Количество синтаксического мусора на квадратный метр растокода просто зашкаливает.

goto-vlad
()
Ответ на: комментарий от yetanother

а те в свою очередь растишку дважды (даже чуть поболее)?

Всё проще: в отличие от C/C++ эта hello-world-числодробилочка на раст до сих пор(!) даже не собирается свежей release-версией компилятора.

gag ★★★★★
()
Ответ на: комментарий от anonymous

Меня смущает что его Мозилла делала. Не доверяю этой компании, не считаю их компетентными. «Если Иванов — за, то я — против».

anonymous
()
Ответ на: комментарий от grem

Шлюха, побежала оправдываться, мразь!

anonymous
()
Ответ на: комментарий от anonymous

Безопасность и свободка - два кита, на которых можно доить бездарное хомячьё. Хомячьё будет жрать любое говно - главное расскажи ему про свободку/безопасность, а ещё лучше пообещай.

Хм, а царь-то не дебил. Все верно. На профессиональном языке называется манипулированием через страх.

anonymous
()
Ответ на: комментарий от gag

Очевидно потому, что используются ещё не стабилизированные конструкции.

andalevor ★★★
() автор топика

Кстати, из непроверенных источников прошла информация, что министерство обороны какой-то буржуйской страны заключило многомиллионный контракт на переписывание сишного кода на раст. Так что кто бы что не говорил про слишком много хайпа в Расте, но ведь работает же! Кое-кто попилит кучу бабла на этом.

Другое дело, что вряд ли этот проект увенчается успехом. По той простой причине, что люди на практике стараются вообще не трогать старый код, дабы не сломать ненароком. А тут еще и переписывание на другой язык с сильно другим подходом - это же по факту с нуля написать. А разработчики уже другие, а документации нет и т.д.

yetanother ★★
()
Ответ на: комментарий от andalevor

Ну дак показывай окончательный. В чём проблема? Показывай полностью.

anonymous
()
Ответ на: комментарий от andalevor

Этому:

for (i, c_row) in c.chunks_exact_mut(n).enumerate() {
        for (j, c_val) in c_row.iter_mut().enumerate() {
            let a_row = &a[i*n..i*n+n];
            let t_row = &t[j*n..j*n+n];
            *c_val = a_row.iter().zip(t_row.iter()).fold(0.0, |sum, (&a,&t)| unsafe{ fadd_fast(fmul_fast(a,t), sum) } );
        }
    }

Эквивалент вот:

  for(size_t i = 0; i < n; ++i) {
    for(size_t j = 0; j < n; ++j)
      c[i][j] = (a[i] * tmp[j]).sum();
  }

Но дело не в этом. Дело в том, что в ситуации с С++ - это голый код, а ситуации с говнорастом - сахарный мусор. Если ты начнёшь изучать тему - ты много осознаёшь. Так просто ты фундаментальные проблемы не пойдёшь.

anonymous
()
Ответ на: комментарий от yetanother

Ну они жили не тужили на Ada. Потом походу решили что свой язык поддерживать дорого и решили дать шанс C/С++. Вон и Unix и венда написаны же, значить должно быть жизнеспособно. Причем официальное разрешение пришло в поздние 90е. Теперь я так понял после нескольких заклинивших дронов задумались о Rust

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Да не о Расте они задумались, а об освоении бюджетных средств. Потому что нет никакого смысла переписывать то, что уже работает. Какой профит от того, что они получат тоже самое что у них уже есть в лучшем случае? А скорее всего они не получат того же самого.

Вот когда коммерческие конторы, которые без госзаказов, а именно своим трудом зарабатывают деньги, начнут переписывать кодовую базу на раст - тогда это будет показателем. А так это намного ближе к попилу бабла, чем к эффективным инвестициям. Люди просто рубанули денег на хайпе вокруг раста. У раста при всех его достоинствах есть серьезные недостатки, вытекающие из его же достоинств. Тот же гуй не могут запилить.

yetanother ★★
()
Ответ на: комментарий от yetanother

Вот когда коммерческие конторы, которые без госзаказов, а именно своим трудом зарабатывают деньги, начнут переписывать кодовую базу на раст - тогда это будет показателем

Этого не происходит только в маня-мирке у хейтеров.

P.S. Пруфов в 5й раз постить на ЛОР не буду, хватит, сам найдешь

У раста при всех его достоинствах есть серьезные недостатки, вытекающие из его же достоинств. Тот же гуй не могут запилить.

Никто в 2019ом году не сядет писать новый тулкит на чем угодно. Чтобы это потом пилить с нуля десятилетие, пока дорастешь до уровня решения всяких продвинутих проблем вроде accessibility. Проще вставить WebKit.

vertexua ★★★★★
()

Правильно ли я пишу на Rust?

Какой тебе Rust, пидеразт.
Иди в школу учись, сынок

anonymous
()
Ответ на: комментарий от andalevor

Я даже дошел до тачки и решил написать тебе аналог:

  auto op = chunk(n) | enumerate;//это первое фундаментальное премущество нормального языка и дизайна
  //ты можешь всё описывать отдельно, а в говне ты будешь копипастиь.
  for(auto [i, a_row]: a | op) {//это второе премущество - нормальный язык может всё скастить как нужно и куда нужно
    for(auto [j, b_row]: tmp | op) {//в говне ты жрёшь говно - паща мусор.
      c[i * n + j] = inner_product(a_row, b_row, 0.);
    }
  }

Мне, конечно, лень было писать то говно бездарное. Там тебя поимела пропаганда. Похоже, что колхозник либо не смог получить нужную производительность, либо не осилил написать это нормально и решил читерить.

Т.е. если я обхожу сами массивы и делю их, то сектант просто написал фор через говно. Скорее всего это просто бот, который не способен мыслить и действует по шаблону, даже там, где это ненужно.

В чём смысл читов. По-сути это обычный for(i, j) - далее он берёт два указателя и обходит их. Никакие его готовые функции там работать не будут - т.к. его говно не может в типизацию. Ему приходится через жопу городить сложение.

Вообщем, как я уже говорил. Что-бы осознать фундаментальную разницу между говном и нормальном языком - тебе нужно хоть что-то понимать.

anonymous
()
Ответ на: комментарий от vertexua

Ну как бы противоречие самому себе. Значит с одной стороны люди переписывают кодовую базу на расте, а с другой писать новый гуи тулкит никто в 2019 не будет? Это как так?

yetanother ★★
()
Ответ на: комментарий от RazrFalcon

Ну по крайней мере на D есть dlangui, который создан практически одним человеком и при этом на расте нет ничего подобного. А все просто потому, что в расте слишком многое принесену в жертву одной стороне языке и писать сложные иерархические структуры данных, которых полно в гуях на нем намного сложнее чем на других языках.

yetanother ★★
()
Ответ на: комментарий от yetanother

а с другой писать новый гуи тулкит никто в 2019 не будет?

Неоднократно встречал мнение, что сейчас нативный GUI никому не нужен. Мол, все переехало в Web, а то, что делается для десктопа, должно делаться на Electron-е.

Если отталкиваться от этого, то новый GUI-тулкит сейчас, действительно, смысла делать нет.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Вполне вариант, что к этому все и идет, но лично мне нативный гуй, конечно, ближе.

yetanother ★★
()
Ответ на: комментарий от yetanother

Так точно. Никто не пишет гуй в 2019ом году. Все в вебе. Даже то что на десктопе, все равно на Electron. А библиотеки переписывают по мере надобности.

vertexua ★★★★★
()
Ответ на: комментарий от eao197

Там просто громадное количество проблем, начиная от рендеринга шрифтов до анимаций и accessibility. Все уже есть в DOM и WebKit, смысла дергаться нет. Напишешь так же гибко - так же сильно будет жрать ресурсы.

Вон alacritty - терминал. Так там лигатуры осилить не могут, потому что с нуля пишут. Сейчас начнут солнце на турнике крутить через Harfbuzz

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Все уже есть в DOM и WebKit, смысла дергаться нет.

Я немного пользовался софтом на базе Electron-а (сходу вспоминается разве что Skype и StarUml), но ничего из использованного приятных впечатлений не вызвало. Отзывчивость так себе, память потребляется, процессор время от времени сильно разгоняется.

Может, конечно, софтоклепатели продолжают находиться под впечатлением от быстрого роста мощности компьютеров, но, имхо free lanch is over уже много лет назад. Рассчитывать на то, что у всех пользователей рано или поздно окажутся Core i7 или i9 слишком наивно, имхо. Сейчас изрядный сегмент рынка тех же ноутбуков занимают недорогие модели с откровенно слабыми процессорами и, дай бог, если 4GiB RAM. Аналогично и со смартфонами: топовые модели создают ажиотаж и, вероятно, приносят хорошую маржу производителям, но вряд ли создают значимую долю находящихся в эксплуатации устройств.

Что до анимации и пр. финтифлюшек, то не факт, что мода на это долго продлится. Тут мне вспоминается пришествие GUI приложений на обычные десктопы в начале 1990-х. Когда графика с анимацией вызывала у пользователей сперва «Вау», а потом оказывалось, что в приложениях, которые используют для повседневной работы она вообще не нужна. А если кто ее ради «Вау» эффекта добавлял, то потом приходилось отключать, ибо пользователи не хотели тратить время на просмотр анимаций.

А проблемы мастабирования и на десктопах в свое время решались. Сперва было много деятелей, которые размеры контролов и окошек в пикселях задавали. Но когда наметился переход от 640x480 к 1024x768, так все эти косяки стали вылезать и до вменяемых разработчиков стало доходить, что размеры шрифтов должны задаваться в пунктах, а не в пикселях.

Так что меня лично Web-зация технологий разработки для десктопа удручает. Но вряд ли у меня есть какой-то выбор.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

На самом деле нужен. И попыток написать гуи на rust я знаю больше 10. Все унылые, естественно, ибо один человек не потянет, но спрос есть.

WebUi используют в первую очередь из-за убогости C++ (ака Qt), ибо это единственный вариант сейчас.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

WebUi используют в первую очередь из-за убогости C++ (ака Qt), ибо это единственный вариант сейчас.

Поржал.

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Потому, что вы не смыслите в GUI.

Ну это же отговорка. Которая показывает невысокий уровень того, кто ее использует.

yetanother ★★
()
Ответ на: комментарий от RazrFalcon

Ничего. Я не против же. Просто все равно сначала как я понял без него, потом все всегда заканчивается этими долгоиграющими реализациями.

И потом ты не заметил, как переизобрел ограниченую версию браузера

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Напишешь так же гибко - так же сильно будет жрать ресурсы.

Конечно же не будет. Как минимум современные языки позволяют часть логики выносить в компайл-тайм и подобных способов снизить ресурсоемкость по сравнению с современными браузерами хвататает. У браузеров все-таки посложнее задача, им еще и легаси тащить нужно.

солнце на турнике крутить через Harfbuzz

Так а что плохого в использовании сторонних библиотек? Я бы тоже использовал Harfbuzz.

yetanother ★★
()
Ответ на: комментарий от vertexua

При чём тут harfbuzz, терминал и браузер? Для консоли вообще-то harfbuzz не нужен, имхо. Ибо ASCII + monospace. Разве что они будут использовать его чисто для лигатур.

потом все всегда заканчивается этими долгоиграющими реализациями

Просто никто из этих «гуи-писателей» не шарит в гуи. Вот и наступают на одни и те же грабли.

PS: мой проект изначально на harfbuzz был.

RazrFalcon ★★★★★
()
Ответ на: комментарий от yetanother

Ну так это не я называют dlangui полноценным GUI. Ему ещё очень далеко даже до уровня гнома, не то что Qt. А они оба - прошлый век.

RazrFalcon ★★★★★
()
Ответ на: комментарий от vertexua

Я к тому, что лигатуры можно и без него реализовать. Это из пушки по воробьям получается. Прямо как с браузерами. Век bloatware.

RazrFalcon ★★★★★
()
Ответ на: комментарий от eao197

Некое адекватное, стабильное развитие QML. Flatter. SwiftUI.

В крайнем случае WPF.

UI в 2020 без HiDPI и аппаратного ускорения - тупик.

RazrFalcon ★★★★★
()
Ответ на: комментарий от vertexua

Там не так сложно. Говорю как человек, с переменным успехом портирующий harfbuzz на rust. 90% его фич не нужны в TUI.

Но так как harfbuzz - единственный свободный шейпер, никуда не денешься. Проще использовать его.

PS: разрабов Pathfinder в треде не увидел

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.