LINUX.ORG.RU

Драйвера на руст

 , ,


2

10

http://www.opennet.ru/opennews/art.shtml?num=51475
Ну что, си можно выбрасывать на помойку? Или нет?
Ъ:соревнования по написанию сетевых драйверов на разных яп. У rust и си +- одинаковая производительность на картинке.
Ссылки на сорцы тут в README.md => https://github.com/ixy-languages/ixy-languages

★★★★★

Последнее исправление: crutch_master (всего исправлений: 4)
Ответ на: комментарий от anonymous

есть очень много бестолкового кода на сишке, который никак не связан с языком а связан с бестолковыми кодерами

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

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

А я не помню, разве у стандартных контейнеров есть Random Access Iterator? Просто если нет, то мне чтобы обратиться к i-ому элементу придется мне надо будет пройти весь путь до i-го элемента.

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

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

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

А как ты себе представляешь компайл проверку динамического вектора.

А чё, раст-компиль не умеет догадываться и понимать намёков.

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

Я и не жалуюсь что кто-то не проверяет динамический массив в компайл. Просто сначала я писал, что в расте есть проверки, которых в Си нет, аноним же сказал про компайлтайм проверки, я привел ему пример рантайм проверки.

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

Ты видимо не понял что сравнивали. Сравнивали не пригодность для драйверов, а производительность в обработке пакетов на самописном стеке где ядерной части осталось только «положить фрейм в userspace» и «забрать из userspace».

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

Каких ещё проверок? По умолчанию там только bound-checking в рантайме. Rust может быть и быстрее в некоторых случаях, ибо гарантирует no aliasing.

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

я привел ему пример рантайм проверки

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

Может и руст-драйвер писали такие же умельцы, пишущие на руст в стиле Си

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от snake266

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

Например умножают два вектора поэлементно и результат кладут в третий.

В С все будет написано через for-loop и индексы. Проверка будет, но на каждой итерации на условии цикла, но не в массивах.

В Rust если написать то же самое safe, то будет 4 проверки - в условии цикла и в каждом из трех массивов.

Если же в Rust использовать c = a.zip(b).map(...).collect(), то будет так же как и в С - одна проверка условия цикла. Индексы нечего проверить, ведь известна суть алгоритма - мы итерируем только по заведомо правильных частях векторов. Это будет полностью safe и быстро.

Ну и естественно unsafe аналог кода на C всегда тоже можно написать.

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

Может и руст-драйвер писали такие же умельцы, пишущие на руст в стиле Си

Никаких «может», ты проверь, а потом всем расскажешь. Или ты, как типичный любитель раста только на форуме языком молоть горазд? 🤠

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

Rust может быть и быстрее в некоторых случаях, ибо гарантирует no aliasing.

Осиль уже restrict, умник.

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

тайный смысл которой возвращать седьмой элемент вектора.

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

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

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

А как ты себе представляешь компайл проверку динамического вектора.

Кхе-кхе dependent types кхе-кхе. Хотя проверку всё равно делать придётся.

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

На самом то деле к safe/unsafe у меня меньше всего вопросов, мне даже нравится это явное разделение.

Что до умножения матриц, тут ясно, мы приходимся по каждому элементу, а если мне нужен доступ к определенному элементу массива (номер элемента задается каким-то вычислениями), то итератор тут уже не поможет. И в итоге мы возвращаемся к 4 проверкам.

P.S. На самом деле мне раст нравится, я просто хочу чтобы он был лучше. (Латентный растишка?)

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

Я да. А ты?

Ты сделал утверждение, но не смог подтвердить его доказательствами, типичный программист-философ. Я же стараюсь не делать заявлений, которые не могу доказать. Всё просто.

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

я просто в никуда обратился к седьмому элементу

Вот именно. Просто написал что-то и довольный )

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

Я же стараюсь не делать заявлений

Плохо стараешься. Теберь беги проверяй код драйвера на руст, потом расскажешь

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

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

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

ну напряглись рогатые черти и переписали что-то на своём говне. ну подумаешь.

Зато у форумных растоаналитиков сегодня красный день календаря — День, Когда Раст Оказался Не Медленнее Си. 🤠

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

По умолчанию там только bound-checking в рантайме.

Тогда почему оно до 10% медленнее?

Rust может быть и быстрее в некоторых случаях, ибо гарантирует no aliasing.

Может быть быстрее он только у тех, кто ничего не понимает в вопросе, но пытается говорить.

То есть, быстрее он только в уютных мирках у типичных Rust-фанатиков.

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

да нихера подобного. это аналог того, того как если бы LGBT запилили свою версию драйвера например HID. ну и как бы что.

прикол у них такой.

растаманы же убоги не потому, что у них раст, а потому что у них идея «не как у москалей» - победить С++. хочешь победить - иди пиши код. не не хочу. хочу жрать говно.

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

Плохо стараешься. Теберь беги проверяй код драйвера на руст, потом расскажешь

Это твоё высказывание, тебе его и подтверждать:

Может и руст-драйвер писали такие же умельцы, пишущие на руст в стиле Си

Хотя, учитывая, что ты сам уже подтвердил, что являешься всего лишь форумным балаболом, то можешь ничего и не доказывать, ведь у тебя есть справка:

Или ты, как типичный любитель раста только на форуме языком молоть горазд?

Я да.

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

bound checking кстати не должен давать заметного дропа скорости.

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

Выходит что и ты лишь форумный балабол, раз не можешь самостоятельно посмотреть в код и проверить возникшие у тебя вопросы)

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

Но не быстрее же.

Ну, на безрыбье, как говорится, и раст рыба.

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

растаманы же убоги не потому, что у них раст, а потому что у них идея «не как у москалей» - победить С++. хочешь победить - иди пиши код. не не хочу. хочу жрать говно.

Ладно, правильней было бы сказать так:

День, Когда Раст Оказался Не Медленнее Си в искусственном, никому не нужном на практике ПриветМире 🤠

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

Вопросов у меня никаких не было, это ты кукарекнул, и был мгновенно заткнут собственной некомпетентностью. В следующий раз попробуй писать код на расте, вместо празднования мнимых «перемог» на форуме.

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

А ты сомневался?

Гошечка вот удивила, беглый взгляд не выявил в коде какой-то хардкорной низкоуровщины, а всё равно очень рядом с Си получилось. Свифт тоже удивил, вроде бы компиляемый язык, чего это говно такое медленное-то? И Шарп впечатлил. Любопытно, что, при всей его схожести с джавой, он насколько он быстре.

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

А ты сомневался?

Да как-то нет. У меня для генты была пачка баш-скриптов, я их переписал на Питоне, и они медленнее выполнялись, чем на баше. Хоть и немного, но всё же.

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

Свифт вообще какая-то срань разочаровывающая. Я бы ещё Котлин посмотрел, небось точно такой же бесполезный хипстошлак. Впрочем, даже если он быстрый, всё равно не понятно зачем нужен.

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

В следующий раз попробуй писать код на расте

Советует мне балабол (сам признал), не способный даже прочитать код на расте

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

Зачем нужен язык, для прочтения которого нужно прочитать талмуд в стиле «как мы сделали отвратный синтаксис только для того, чтобы поддерживать наше ЧСВ»?

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

Небольшое переписывание с баша под dash с бережным отношением к порождению лишних процессов, кстати, может неплохой прирост дать.

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

Советует мне балабол (сам признал), не способный даже прочитать код на расте

То есть, на расте писать ты так и не захотел. Забавный парадокс у растокодла — нахваливают свой язычок, словно панацею, а из собственных проектов только ПриветМиры да клоны coreutils №N+1.

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

нет, в драйвере победить С довольно просто. я имел счастье работать с входящим 40гбит-потоком из UDP. и там не очень-то наверное важно, на чем написан драйвер, ибо большая часть времени тратися в «стеке протоколов».

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

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

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

Бессмысленное сравнение

Никто же не сомневался. Видимо, просто было интересно сравнить. Либо шутники это вообще по прикоду сделали.

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

Там вообще сайд-эффектов не нужно в архитектурах вроде Redux

Ок, юзать фукциональщину там удобнее, чем в среднем по больнице, допустим. Но это не отвечает на вопрос «зачем?».

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

Зачем нужен язык, для прочтения которого нужно прочитать талмуд в стиле «как мы сделали отвратный синтаксис только для того, чтобы поддерживать наше ЧСВ»?

Это ты у царя спроси зачем нужны плюсы

Только не нужно делать вид, что раст читабельнее C++:

Rust

macro_rules! vec {
    ($elem:expr; $n:expr) => (
        $crate::vec::from_elem($elem, $n)
    );
    ($($x:expr),*) => (
        <[_]>::into_vec(box [$($x),*])
    );
    ($($x:expr,)*) => ($crate::vec![$($x),*])
}

C++

#include <iostream>

using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}
anonymous
()
Ответ на: комментарий от WitcherGeralt

Швифт подозрительно точно коррелирует с js. А шарп с гошечкой подозрительно близко к сям для языков с GC и рантаймом размером с Windows 98

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

Ну тут вы лукавите. В куске к расту, вы приводите макрос из стдлиб, а к C++ вы приводите хеллоу ворлд

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

ну напряглись рогатые черти

Это кто такие? Вроде ж только в FreeBSD такой лого был

vertexua ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.