The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Оценка потребления памяти при одновременном запуске миллиона задач

29.11.2024 16:52

Опубликованы результаты тестирования потребления памяти при выполнении кода, создающего миллион параллельно выполняемых сопрограмм. Тестирование проведено для типовой программы, реализованной на языках программирования Rust, C#, Go, Java, Python и JavaScript.

В Rust задачи создавались с использованием фреймворка Tokio и на базе библиотеки async_std, в C# - API List<Task>(), JavaScript - async/await в Node.js, Python - asyncio, Go - goroutine, Java - сопрограммы. Используемые версии и конфигурация: Rust 1.82, .NET 9.0.100 с NativeAOT, Go 1.23.3, OpenJDK/GraalVM 23.0.1, NodeJS 23.2.0, Python 3.13.0.

Результаты:

  • Запуск одной задачи для оценки потребления памяти в runtime.

  • Запуск 10 тысяч задач.

  • Запуск 100 тысяч задач.

  • Запуск миллиона задач. Высокое потребление памяти в Go при похождении теста объясняется лишним использованием ключевого слова "defer", приводящим к выделению дополнительной памяти.

  • Похожий прошлогодний тест с запуском миллиона задач, проведённый автором Spark Cassandra Connector и одним из разработчиков распределённой СУБД DataStax Enterprise (на базе Apache Cassandra).



  1. Главная ссылка к новости (https://hez2010.github.io/asyn...)
  2. OpenNews: Опубликованы тесты простейших приложений на различных языках программирования
  3. OpenNews: Сравнение эффективности 20 языков программирования
  4. OpenNews: Оценка популярности открытых лицензий в зависимости от языка программирования
  5. OpenNews: Проект по тестированию эффективности языков программирования
  6. OpenNews: Сравнение производительности сетевого драйвера в вариантах на 10 языках программирования
Лицензия: CC BY 3.0
Наводку на новость прислал Artem S. Tashkinov
Короткая ссылка: https://opennet.ru/62314-lang
Ключевые слова: lang, benchmark, rust, dotnet, go, java, python, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (262) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ijuij (?), 16:42, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +33 +/
    А где C/C++? 🤬
     
     
  • 2.2, Барашек (?), 16:44, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +43 +/
    тренера не играют
     
     
  • 3.45, Аноним (45), 17:32, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > тренера не играют

    Лол, какие тренера, если в C корутин вообще нет и не будет, а в плюсах они появились лишь в стандарте 2020 года.

     
     
  • 4.53, Аноним (53), 17:45, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Лол, какие тренера, если в C корутин вообще нет и не будет,

    Да могли бы хотя-бы и треды заспаунить каким-нибудь posix threads. Это даже круче ибо полновесные потоки. Интересно же столь наивный brute force в сравнении будет.

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

    > а в плюсах они появились лишь в стандарте 2020 года.

    И что? Для хруста же можно взять какие-то вообще сторонние "фреймворки" или для жабы - разные VM. А в чем проблемы взять компилер с C++23 тогда?!

     
     
  • 5.58, Аноним (58), 17:49, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Правда оно там специфичное, под задачу. Си достаточно низкоуровневый чтобы на нем делать многое из того для чего в каком-нибудь Rust придется синтаксис корежить, а в игого и прочих питонах - чешут репу и сообщают что задача нерешаема.

    Угу, то-то Торвальдся жалуется, что за 30 лет нормальный менеджмент памяти не осилили.
    Но про "специфичное" соглашусь)

    > И что? Для хруста же можно взять какие-то вообще сторонние "фреймворки" или для жабы - разные VM. А в чем проблемы взять компилер с C++23 тогда?!

    Там есть не только фреймворк, но STD.


     
     
  • 6.68, Аноним (-), 18:00, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я б все понял - если б весь тот набор еще и не пользовался услугами богов в ви... большой текст свёрнут, показать
     
  • 6.234, glad_valakas (?), 07:45, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > жалуется, что за 30 лет нормальный менеджмент памяти не осилили.

    прошу уточнить что такое "нормальный менеджмент памяти".
    когда GC запускается по желанию своей левой пятки и по закону подлости всегда не вовремя - это "нормальный менеджмент памяти" ? почему ?

     
  • 5.90, Аноним (90), 18:56, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Лол, какие тренера, если в C корутин вообще нет и не будет,
    > Да могли бы хотя-бы и треды заспаунить каким-нибудь posix threads

    Не могли бы, ибо смысл был именно в замере корутин, а не потоков.

     
     
  • 6.127, Совершенно другой аноним (?), 19:23, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Можно воспользоваться библиотекой corutine h от Simon Tatham необходимая часть ... большой текст свёрнут, показать
     
  • 6.190, pavlinux (ok), 00:31, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Абдолноним, задание читал?

    "Давайте запустим N одновременных задач, где каждая задача ждет 10 секунд,
    а затем программа существует после завершения всех задач. Количество задач
    контролируется аргументом командной строки."

    Где ты  увидело  "корутин"

     
     
  • 7.290, Аноним (290), 13:16, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Абдолноним, задание читал?
    > "Давайте запустим N одновр...

    Следующее предложение из оригинальной статьи ты тактично решил опустить? Или ты по-английски не бум-бум?

    "This time, let's focus on coroutine instead of multiple threads."

     
  • 6.212, Аноним (-), 04:14, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>> Лол, какие тренера, если в C корутин вообще нет и не будет,
    >> Да могли бы хотя-бы и треды заспаунить каким-нибудь posix threads
    > Не могли бы, ибо смысл был именно в замере корутин, а не потоков.

    Это где такое было написано? Или это измышлизмы какого-то анонма с опеннета на тему?

     
     
  • 7.241, Аноним (241), 08:26, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > List<Task>(), goroutine, сопрограммы.

    Была бы задача замерять треды - замеряли бы именно треды.

     
  • 7.291, Аноним (290), 13:18, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это где такое было написано? Или это измышлизмы какого-то анонма с опеннета на тему?

    Это написано черным по белому буквально в начале оргинальной статьи:

    This time, let's focus on coroutine instead of multiple threads.

     
  • 4.93, ИмяХ (ok), 18:58, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>2020 года

    Так уже 4 года прошло

     
  • 4.152, bircoph (ok), 20:21, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да? А мужики-то не знают:
    https://github.com/tidwall/neco
     
     
  • 5.309, Аноним (309), 15:27, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И про это https://gnupg.org/software/npth/index.html мужики тоже не знают. "Experience with a Windows Pth emulation showed that this is a solid way to provide a co-routine based framework."
     
  • 5.340, Аноним (340), 03:46, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Gigigi, забавно что афтар переписол редис с сишки на сишку
     
  • 4.185, Аноним (185), 23:37, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >в C корутин вообще нет и не будет

    Системный вызов fork никто не отменял.

     
     
  • 5.214, Аноним (-), 04:19, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>в C корутин вообще нет и не будет
    > Системный вызов fork никто не отменял.

    Ну вообще-то вот именно fork(), в колличестве миллион, тебе очень врядли понравится. Особенно если это именно - форк, т.е. новые процессы. Это будет долго - и сожрет изрядно памяти.

    Если это lwp и какой-нибудь clone()... может быть, но можно было не выделываться и стартануть тред как нормальный человек, позиксной библой.

     
  • 3.180, Овцелюб (-), 23:04, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Отправлено Барашек, 29-Ноя-24 16:44
    > тренера не играют

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

     
  • 2.12, Аноним (-), 16:52, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • –11 +/
     
     
  • 3.21, ijuij (?), 17:00, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 2.28, Аноним (-), 17:10, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.42, Аноним (42), 17:28, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скорее всего Rust будет наиболее близким к их результатам так что можно мысленно убавить несколько позиций от Rust и получить примерный результат C/CPP
     
     
  • 3.183, Аноним (-), 23:15, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, скорее всего C++ будет наравне с Rust, но кто в своём уме станет писать асинхронщину на плюсах?
     
     
  • 4.321, Диды (ok), 19:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Только те, кто собирается что-то написать, а не только поговорить об этом
     
  • 2.44, Аноним (45), 17:29, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А где C/C++?

    А в C нет корутин 😂

    В C++ они появились только в 2020 году. Видимо, люди как пользовались Бустом, так и продолжают пользоваться.

     
     
  • 3.55, Аноним (53), 17:48, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > А в C нет корутин 😂

    В си есть возможность их сделать - и ест реализации. И если для хруста можно брать сторонние "фреймворки" то почему и для си так же нельзя?!

    > В C++ они появились только в 2020 году. Видимо, люди как пользовались Бустом,
    > так и продолжают пользоваться.

    Это какой-то не особо убедительный аргумент для обоснования результатов бенчмарка и "почему нет %s".

     
     
  • 4.62, Аноним (62), 17:53, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это какой-то не особо убедительный аргумент для обоснования результатов бенчмарка и "почему нет %s".

    А кто мешает - тебе, как больше всех "надобному"?
    А то ты уже минимум два поста накатал, почему и как можно было бы ... Или у тебя лапки?

     
  • 4.63, Аноним (58), 17:54, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> А в C нет корутин 😂
    > В си есть возможность их сделать - и ест реализации.

    Но в стандарте нету. А стандарт это святое!
    Понятно, что и на брейнфаке можно сделать, но получится брейнфачно.

    >  И если для хруста можно брать сторонние "фреймворки" то почему и для си так же нельзя?!

    Потому что у хруста 2 версии - async_std и кастомщина.
    Можно посмотреть и решить, стоит ли заморачиваться с токио или достаточно того что "из коробки".


     
     
  • 5.72, Аноним (-), 18:07, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, а почему в хрусте тогда 2 нестандартные реализации и в жабе виртуалки какие-... большой текст свёрнут, показать
     
  • 5.156, morphe (?), 20:34, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно посмотреть и решить, стоит ли заморачиваться с токио или достаточно того что "из коробки".

    async-std - не из коробки, это сторонняя библиотека, дефолтная стандартная библиотека не включает в себя рантайм, а лишь всё что нужно для его реализации.

    Де-факто стандартным рантаймом же считается tokio.

     
  • 4.84, Аноним (90), 18:50, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > В си есть возможность их сделать - и ест реализации. И если для хруста можно брать сторонние "фреймворки" то почему и для си так же нельзя?!

    Потому что бессмысленно, ибо сегодня удел C - это сугубо embedded, а где ты там будешь тулить корутины?

     
     
  • 5.276, laindono (ok), 11:32, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В чём проблема использовать корутины в embedded? Более того, они там весьма активно используются. Это ведь вариация кооперативной многозадачности.
     
     
  • 6.294, Аноним (290), 13:31, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В чём проблема использовать корутины в embedded?

    В том, что для stackless корутин на сях нужно юзать кучу, что затратно или вообще запрещено условной Мизрой. А для stackful корутин вообще нужна поддержка компилятора, чего в сишке нет (а с setjmp/longjmp ты сразу полючаешь UB из-за мусора в локальных переменных, если они менялись после setjmp и не были промаркированы volatile).

     
     
  • 7.311, laindono (ok), 16:36, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Значит берём язык, который лучше подходит. Например Rust. Его корутины очень хорошо подходят в том числе и для embedded.

    > нужно юзать кучу, что затратно

    Если куча слишком дорогая выходит, то надо брать более адекватные задаче камни. Что может быть дорогого в простейшем bump-аллокаторе? В любом случае, если для решения задачи в принципе нужно кооперативную многозадачность делать, то это не самые минималистическе камни уже.

     
  • 5.317, Аноним (-), 19:41, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что бессмысленно, ибо сегодня удел C - это сугубо embedded, а
    > где ты там будешь тулить корутины?

    А твое сообщение сюда, конечно же, было написано из Servo - под Redox или Fuchsia, не меньше? А если нет - тогда это wishful thinking очередного утенка, не более :)

     
  • 4.133, Страдивариус (?), 19:28, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В си есть возможность их сделать - и ест реализации. И если для хруста можно брать сторонние "фреймворки" то почему и для си так же нельзя?!

    Сразу видно человека, который никогда не пользовался какой-нибудь из реализаций на Си, и какой-нибудь реализацией на расте.

    Невозможно сделать stackless корутину без помощи компилятора. Кто будет код твоей функции в конечный автомат превращать?

     
     
  • 5.217, Аноним (-), 04:24, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> В си есть возможность их сделать - и ест реализации. И если для хруста можно брать сторонние "фреймворки" то почему и для си так же нельзя?!
    > Сразу видно человека, который никогда не пользовался какой-нибудь из реализаций на Си,
    > и какой-нибудь реализацией на расте.
    > Невозможно сделать stackless корутину без помощи компилятора. Кто будет код твоей функции
    > в конечный автомат превращать?

    В сях есть setjmp/longjmp коих достаточно для - внезапно - создания корутин. Чем дофига народа и развлекается. А еще есть наконец и просто треды, позиксные или даже уже и - таки - стандартные сишные. Но, видимо, хрустикам прикольнее избивать жаб и гадюк палкой, а то от этих ведь еще и получить можно!

     
     
  • 6.328, Страдивариус (?), 20:17, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я же тебе написал про stackless. Причем тут setjmp, чудо ты в перьях?

    А что касается тредов - ну создай миллион тредов, хоть позиксных, хоть сишных - посмотрю на тебя, клоун-школотрон =)

     
  • 3.124, Аноним (124), 19:20, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    setjump - longjump.
     
  • 2.79, 12yoexpert (ok), 18:41, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    с ними график был бы некрасивый, один пиксель и С/С++ и все пиксели у остальных
     
     
  • 3.117, Аноним (62), 19:14, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > с ними график был бы некрасивый, один пиксель и С/С++ и все пиксели у остальных

    "Talk is cheap, show me the code!"(c)

     
  • 3.159, Аноним (159), 21:00, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вышел бы за границы буфера?
     
  • 2.146, Аноним (146), 19:55, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А Ruby?
     
     
  • 3.251, Аноним (251), 10:17, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пожалуйста не надо, не хочу скролить страницу вбок.
     
  • 2.265, Аноним (265), 10:40, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А common lisp, а free pascal?
    Интересно же глянуть как мэтры с этим справляются?!
     

     ....большая нить свёрнута, показать (47)

  • 1.3, Андрей (??), 16:45, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    Вот тебе и Go...
     
     
  • 2.77, Человек из глубинки (?), 18:35, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То что у него GC кривой - это совсем не новость.
     
     
  • 3.360, Аноним (360), 17:44, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А где лучше? Вы о чём.
     
  • 2.196, OpenEcho (?), 01:48, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Вот тебе и Go...

    Абстрактный тест с нереальной задачей, и все, - разочарование... :)

    И вообще, приведенная Го программа этим тестировщиком, не должна компилироваться в принципе, так как содержит банальную ошибку.

    Люди забывают кажется уже в этой абстрактности, что есть банальное, реальное железо, в 4, 8..500 корок ЦПУ, но никак уж не 1М, даже с сетевыми задачами, где приходится ожидать, можно несколько тысяч на кор, можно даже несколько десятков тысяч если проц силен, но точно уж не миллион. Реальные задачи с одним миллионом конкурентности - это чушь, если конечно они не спешат дождаться выполнения. Такие задачи выполняются в очередях, учитывая реальное количество процессоров

     
     
  • 3.260, Аноним (-), 10:29, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А здесь, что думаешь под капотом Там есть сет ожидающих задач, которым абсолютн... большой текст свёрнут, показать
     
     
  • 4.292, OpenEcho (?), 13:22, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А здесь, что думаешь под капотом? Там есть сет ожидающих задач, которым
    > абсолютно нечего делать, пока что-то не произойдёт, и очередь задач которым
    > есть что делать и они ждут процессорного времени.

    И где это там ты очередь разглядел ? :)))

    В банальном цикле запускается в паралель(!!!) лимон горутин, а очередь это как в магазине - две продавщицы в паралель(всего две!!!) обслуживают, а остальные в линеечку ждут

    > Это потому что у тебя завышенные ожидания. А это, как я понимаю, из-за того что нет контекста, позволяющего правильно интерпретировать заголовок.

    Ты сам то понял что сказал, телепат

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

    Тебе не кажется, что ты просто все переиначил и сказал тоже самое что и я?

     
     
  • 5.314, Аноним (-), 17:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А как по-твоему рантайм шедулит таски Рантайм делает именно то, о чём ты говори... большой текст свёрнут, показать
     
     
  • 6.342, OpenEcho (?), 04:11, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> И где это там ты очередь разглядел ?
    > А как по-твоему рантайм шедулит таски? Рантайм делает именно то, о чём
    > ты говоришь, берёт таски, готовые выполняться и складывает о очередь.

    О чем ты, человек ?

    Посмотри еще раз на исходный код программы ! где ты там шедулеры разглядел?

    На код смотри, а не на то, как оно там под капотом и как оно тебе кажется

     
     
  • 7.354, Прохожий (??), 13:58, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Посмотри еще раз на исходный код программы ! где ты там шедулеры разглядел?
    >На код смотри, а не на то, как оно там под капотом и как оно тебе кажется

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

     
     
  • 8.359, OpenEcho (?), 16:28, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В код смотрите, специалисты Вы в натуре не в той области тусуетесь, если думае... текст свёрнут, показать
     
     
  • 9.364, Аноним (-), 18:10, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ключевое слово если Нет, мы не думаем, что рантаймы и фреймворки за нас будут... текст свёрнут, показать
     
  • 5.362, Аноним (360), 17:46, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Абсолютно согласен.

    Совершенно синтетический тест: как будто никто не знал что горутины жрут много памяти из-за стека, вот это сюрприз. Такие ситуации разруливаются просто по-другому: https://github.com/valyala/fasthttp/tree/master/stackless

     
  • 2.282, Аноним (282), 12:26, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Просто Go создаёт реальные горутины, готовые к исполнению (легковесные потоки), а остальные очередь на исполнение кода (список задач). Просто разные подходы под разные потребности.
     
  • 2.363, Аноним (360), 17:50, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нормально всё с Go. Да, Rust лучше/быстрее/надёжнее, но вы пробовали обучить Rust'у команду мидлов за 3 месяца? А с Go всё получилось.
     

  • 1.5, Пью чай и греюсь пледом (?), 16:45, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    В целом шарп неплохой коспромис по производительности, удобству и кроссплатформенности.
     
     
  • 2.13, ijuij (?), 16:54, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Вы пробовали использовать его на Debian/Ubuntu/Arch Linux? Каковы ваши впечатления?

     
     
  • 3.18, Аноним (18), 16:57, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я не программист всех языков, в отличии от остальных комментаторов, но мои хеллоуворлды работали исправно :-)
     
  • 3.25, nume (ok), 17:06, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Использую, проблем нет
     
  • 3.38, Аноним (38), 17:20, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Говорят, на .нет 9.х неплоха
     
  • 3.161, _kp (ok), 21:01, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да. В Wine никаких проблем.

    Зачем так? Если разработчик, и можешь собрать как угодно?
    Да возникла проблема с библиотекой, с открытой, и кроссплатформенной, которая нативная для Linux имела проблемы.
    А надо сдавать, а не в чужом и большом коде копаться. Ну сделали через Wine. Временно.
    А потом подумали, и нафига версии для Linux и Windows делать, если в Wine все отлично.
    И тут с c# все проблемы как рукой сняло. ;)

     
     
  • 4.271, Илья (??), 11:00, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да. В Wine никаких проблем.

    Но зачем, если дотнет сейчас полностью кроссплатформенный?

     
     
  • 5.320, Аноним (-), 19:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Да. В Wine никаких проблем.
    > Но зачем, если дотнет сейчас полностью кроссплатформенный?

    Вот прямо полностью? И можно написать 1 графическую прогу на винду, линух и мак и это даже работать будет? Или у вас как обычно у майрософт - звездочки пятым шрифтом, с множествлм уточнений и подлянок?

     
     
  • 6.336, Аноним (-), 00:32, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Есть AvaloniaUI и бинды на тулкиты типа gtk. Но официально, first-party как говорится, ничего, да.
     
  • 6.350, Илья (??), 11:41, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И можно написать 1 графическую прогу на винду, линух и мак и это даже работать будет?

    Avalonia. Или можно вообще ксамарин попробовать, тогда ещё и с мобилками общий гуй будет

     
  • 5.365, _kp (ok), 20:54, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Да. В Wine никаких проблем.
    > Но зачем, если дотнет сейчас полностью кроссплатформенный?

    Я ж написал. Если нативная библиотека с багом, уже кроспатформенность остального не важна. Просто до следующего крупного обновления, просто так переделывать никто не станет, и тем более за даром.
    А с Wine можно много что перетащить, ибо свое ПО подправить быстрее, чтоб в Wine было хорошо, чем переписать, не все же на дотнет переписано.

     
  • 4.378, Прохожий (??), 07:48, 02/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Случаем не в 1С работаете?
     
     
  • 5.380, _kp (ok), 09:45, 02/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Случаем не в 1С работаете?

    Никогда! ;)

     
  • 3.163, Аноним (163), 21:22, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Использую в арче, все устраивает. Только скорость появления новых версий в репозиториях так себе
     
  • 3.200, мяв (?), 03:38, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да.
    mono хорошо работает. правда, в девуане были какие-то непонятки с GAC, из-за чего он не работал в 11й версии.
    сейчас все норм.
    больше скажу, даже под freebsd все хорошо.
     
     
  • 4.273, Илья (??), 11:03, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > mono хорошо работает

    Пацаны, вы из какой криокамеры? Дотнет максимально кроссплатформенный и устанавливается в 2-3 команды на любую ОС. Моно давно в историю должен уйти

     
     
  • 5.283, Ан (??), 12:35, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Любитель телеметрии?
     
  • 5.304, мяв (?), 14:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >вы из какой криокамеры?

    Вы под какими спидами?
    новость о переходе разработок в dotnet/runtime была где-то в середине лета, если не под его конец.
    в дебиане и рхел'е все так же mono.

     
     
  • 6.319, Аноним (-), 19:47, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы под какими спидами?

    Маркетинга майкрософта сэр явно пережрал. Хотя у него в маздае оно вообще - ставится добровольно-принудительно, хрен откажешься от этого летающего макаронного монстра.

    > новость о переходе разработок в dotnet/runtime была где-то в середине лета, если
    > не под его конец.
    > в дебиане и рхел'е все так же mono.

    И гуя кроссплатформенного там нет даже в проекте. Но когда бесстыжих фанбоев MS пишущих о кроссплатформе из маздайки такое смущало? А потом эти люди почему-то удивляются что в Linux их таких - в гробу видали, и программ на этом полторы штуки за все время существования этой хтони.

     
     
  • 7.338, мяв (?), 02:17, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    так-то, есть GTK#, полноценная мультиплатформа:
    https://www.mono-project.com/docs/gui/gtksharp/
    и даже смотрится хорошо:

    https://monodevelop.com

    https://wiki.gnome.org/Apps(2f)Tomboy.html

    но пока только GTK3, к сожалению.

     
     
  • 8.343, Аноним (-), 05:08, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Полноценно - по какому критерию Ни 1 программы на этом для винды - я не видел ... большой текст свёрнут, показать
     
  • 7.377, User (??), 07:41, 02/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И гуя кроссплатформенного там нет даже в проекте. Но когда бесстыжих фанбоев MS пишущих о кроссплатформе из маздайки такое смущало? А потом эти люди почему-то удивляются что в Linux их таких - в гробу видали, и программ на этом полторы штуки за все время существования этой хтони.

    И накой тебе тот гуй на сервере? А десктопа под онтопик один черт нет, и уже не будет - фигли под него писать? Электрон есть, им и обмазывайся.

     
  • 5.318, Аноним (-), 19:45, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Пацаны, вы из какой криокамеры? Дотнет максимально кроссплатформенный и устанавливается
    > в 2-3 команды на любую ОС. Моно давно в историю должен уйти

    При том настолько максимально кроссплатформенный - что кроссплатформенного в нем UI нету от слова вообше.

    Фанбои майкрософта - не лучше чем сам майкрософт, тоже врут с три короба на каждом углу. И что на этой какахе делать предлагается? Веб? Это там мучительно и безблагодатно. Go какой-нибудь в 5 раз проще и компактнее, и сразу в нативный код компилится - без гигабайтов ассемблей и виртуалок.

     
     
  • 6.339, мяв (?), 02:22, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >UI нету от слова вообше.

    есть биединги к qt и gtk.

    >Веб?

    хоть cli - с появлением AOT это больше не проблема.
    в гноме даже заметки были на С#.

    >без гигабайтов ассемблей и виртуалок.

    во-первых, кто и где Вам показал "гигабайты ассемблей" ?
    во-вторых, man ".NET AOT"

    >Фанбои майкрософта - не лучше чем сам майкрософт, тоже врут с три короба на каждом углу.

    хейтеры - тоже не ахти.

     
     
  • 7.344, Аноним (-), 05:14, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но штатно майкрософт почему-то сватает совсем не это Хотя кому-то и гражданин... большой текст свёрнут, показать
     
     
  • 8.352, Илья (??), 11:53, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Можно подробнее Устанавливаешь VS Code запускаешь скрипт, который тебе доставл... текст свёрнут, показать
     
  • 6.351, Илья (??), 11:49, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > кроссплатформенного в нем UI нету от слова вообше.

    AvaloniaUI, Android и IOS обёртки, GTK, QT, там много чего

    > Фанбои майкрософта - не лучше чем сам майкрософт, тоже врут с три короба на каждом углу.

    Все сговорились. Но ты не проверяй, мы тебе врём, да

    > И что на этой какахе делать предлагается? Веб?

    Да

    > Go какой-нибудь в 5 раз проще и компактнее, и сразу в нативный код компилится - без гигабайтов ассемблей и виртуалок.

    Нет. На дотнете веб гораздо лучше выходит. Там с годами наработанная инфраструктура. Производительность выше.

     
  • 5.366, _kp (ok), 20:57, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/

    >Дотнет максимально кроссплатформенный

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

     
  • 3.274, Илья (??), 11:04, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Вы пробовали использовать его на Debian/Ubuntu/Arch Linux? Каковы ваши впечатления?

    Примерно лучшее, что есть на сегодняшний день.

     
  • 2.65, Аноним (65), 17:58, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А джава по памяти. Посмеялся, спасибо.
     
  • 2.140, Анон1110м (?), 19:47, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может всё таки не C# а .NET?
     

  • 1.7, Аноним (7), 16:49, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Результаты Go поражают 🤦‍♂️
     
     
  • 2.16, ijuij (?), 16:56, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это вполне ожидаемо. Я применяю его для разработки MVP, а если продукт окажется успешным, то перепишу его на C++.

     
     
  • 3.36, Аноним (38), 17:19, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А почему не раст?)
     
     
  • 4.46, Аноним (-), 17:34, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А почему не раст?)

    Может у человека 10-20 лет опыта плюсов и он все грабли знает наизусть.
    А может проекты не стоят затрат сил на обеспечение надежности и безопасности.

     
     
  • 5.248, Прохожий (??), 09:54, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >А может проекты не стоят затрат сил на обеспечение надежности и безопасности

    Гугл продемонстрировал, что производительность программистов на Rust выше, чем у программистов на C++. И качество кода тоже лучше.

     
     
  • 6.256, Омномним (?), 10:22, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот ети все статистики работют для больших чисел. Когда есть хотя б 40-50 прогеров.
    Для одного единственного, может и не сработать.
     
     
  • 7.297, Прохожий (??), 14:03, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Для одного единственного, может и не сработать.

    Ну да, если это программист на Питоне.

     
  • 3.50, Вася Пупкин (?), 17:41, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Замени го на питон. И плюсы на раст. и тогда все будет правильно, быстрее, удобно и надежнее.
     
     
  • 4.60, Аноним (53), 17:51, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Замени го на питон.

    А чего все остальные в вебе - наоборот делают? А, вы наверное продаете серваки и недовольны падением продаж?! :)

    > И плюсы на раст. и тогда все будет правильно, быстрее, удобно и надежнее.

    И заодно програмер через годик-другой сольется от постоянной гонки за скачайте ночнушку - и проект помрет. Зато можно будет продать еще серваков - уже новому лоху.

     
  • 4.182, Аноним (182), 23:14, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А я пришёл к выводу что проще сразу писать на Rust Скорость разработки на нём н... большой текст свёрнут, показать
     
     
  • 5.275, Илья (??), 11:19, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Скорость разработки на нём не намного ниже чем на питоне

    На питоне в итоге худшая скорость разработки получается.

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

     
     
  • 6.322, Аноним (-), 19:52, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Скорость разработки на нём не намного ниже чем на питоне
    > На питоне в итоге худшая скорость разработки получается.
    > Там скорость чтения кода очень низкая. Хрупкий, куски кода часто приходится переписывать
    > с нуля. Я думал, от питона сознательные люди отказались давно

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

     
     
  • 7.353, Илья (??), 11:55, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Питон вообще одноразовым у нас считался. Ребята пишут код, потом вместо того, чтобы баги править всё с нуля переписывают.

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

     
  • 5.367, _kp (ok), 21:03, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/

    > Скорость разработки на нём не намного ниже чем на питоне

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

     
  • 3.199, Аноним (199), 03:04, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > если продукт окажется успешным, то перепишу его на C++

    ... и окажешься первым на планете, кто гошное приложение переписал на плюсы, а не просто докупил железа. Хотя, возможно, это потому, что окажешься первым, кто написал на го УСПЕШНЫЙ продукт...

     
  • 3.206, Аноним (206), 03:55, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >применяю его для разработки MVP,

    Почему не matlab?

     

  • 1.8, Пью чай и греюсь пледом (?), 16:49, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Кстати, ноде вообще пофиг, она тут лидер по стабильности :-)
     
     
  • 2.168, th3m3 (ok), 21:48, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сливает даже Питону)
     
     
  • 3.323, Аноним (-), 19:53, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.10, Аноним (-), 16:51, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Java тормознутая. Легенда о тормознутости Жабы доказана. Что и требовалось доказать.
     
     
  • 2.22, Аноним (18), 17:00, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты вообще читал новость? 🤦
     
     
  • 3.94, Аноним (90), 18:58, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да он даже заголовок не осилил 😂
     
  • 2.37, Аноним (37), 17:19, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты различаешь скорость работы и жручесть памяти? По скорости ява вполне сравнима даже с компилируемыми в нативщину языками, а вот по жручести памяти полное днище. Это было основное, что мне в ней крайне не нравилось.
     
     
  • 3.88, Аноним (88), 18:55, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Жручесть памяти в JVM это примерно как жручесть памяти в Линукс Новички тоже по... большой текст свёрнут, показать
     
     
  • 4.143, Анон1110м (?), 19:49, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пользовался IDE на Java и по ощущениям — сплошные тормоза.
     
     
  • 5.324, Аноним (-), 19:55, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Пользовался IDE на Java и по ощущениям — сплошные тормоза.

    Да что там, Arduino - по уровню фич чуть лучше нотпада, ну ладно, может на уровне Mousepad какого-нибудь микроскопического. Но тормозит и лагает эта лабуда - как Qt Creator какой, только этот - мощный дредноут для разборки с проектами космического масштаба, а ардуино - так, блокнотик с прошивалкой.

     
     
  • 6.379, anon111 (?), 07:49, 02/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Поставь 1.8. Тормоза добавили с 2.0.
     
  • 3.254, microcoder (ok), 10:21, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты различаешь скорость работы и жручесть памяти?

    Жручесть памяти = выделение памяти, а выделение памяти это процессорное время + время на GC, что является "лишними" вычислениями, а равно - ТОРМОЗНУТОСТИ. Эта простая формула.

     
  • 2.69, Аноним (65), 18:00, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Какие легенды? Это ещё деды в учебники по физике записали.
     

  • 1.11, Шарп (ok), 16:52, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По сути c# с AOT победитель, потому что память потребляет чуть больше раста, но при этом является нормальным языком без необходимости приседать с borrow checker.
     
     
  • 2.15, Аноним (18), 16:55, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В долгосрочной перспективе победитель нода :-) Потому что вообще не надо конпилять, уже занимает львиную долю рынка и относительно простая в плане освоения. Но шарп хорош тем, что он не только для вэба.
     
     
  • 3.30, Rev (ok), 17:13, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ага, а дистрибутивы продукта занимают гигабайты, состоя из 30000 файлов.
    Нода - самый отстой из всего. На втором месте руби.
     
     
  • 4.48, анонимище (?), 17:40, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а Руби чем вам не угодил?
     
  • 4.49, НяшМяш (ok), 17:41, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Пакет ноды занимает 50-60 мегабайт в моём дистрибутиве после распаковки. Даже меньше, чем питон. Найти приложение на ноде с гигабайтами исходников надо ещё постараться. Да и есть кучи компилеров, транспилеров и бандлеров, чтобы это всё упаковать в компактный вид.
     
     
  • 5.145, Анон1110м (?), 19:51, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это всё без разницы потому что ЯваСцэнарий один из худших языков на планете.
     
  • 5.177, fuggy (ok), 22:40, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Легко средний проект занимает 50-90К файлов. Всё это добро занимает 400-700МБ. И это только исходники. Ведь каждый пакет это однострочная функцию, к которой в комплекте source map, файл лицензии, readme, changelog, тесты, данные для тестов. И всё это только для одного пакета из одной функции. И таких пакетов тысячи.
     
  • 4.126, Аноним (124), 19:23, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, не самый. Есть ещё Electron - это нода вместе с движком от Хромиума...
     
  • 4.242, Илья (??), 08:44, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нода - самый отстой из всего. На втором месте руби.

    питон ужасен

     
  • 3.100, Олололололололо (-), 19:02, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Любой проект на ноде тащит за собой миллиарды миллиардов файлов с npm сайта. Кто-то проверят, что в этих файлах понаписали? Нет, нет и нет. В результате если писать хоть сколько либо серьёзный проект на ноде нужно писать всё с нуля и не использовать ни одного пакета с npm,  а так на ноде не бывает.
     
     
  • 4.203, Аноним (203), 03:51, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разве язык виноват в том, что репозиторий превратился в пoмoйку? Не хочешь тащить вacянскиe библиотеки и фреймворки? — Пиши с нуля. (вопреки популярному мнению среди смyзиxлeбoв, это не самая худшая практика)
     
  • 4.257, Аноним (265), 10:23, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот это походу и называется дэпэндэнси хэл
     
  • 4.258, microcoder (ok), 10:27, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто-то проверят, что в этих файлах понаписали? Нет, нет и нет.

    Кто-то Винду проверяет что там понаписано? А Линукс, где десятки тысяч пакетов от "васянов", кто это всё проверяет, каждую строчку, что там понаписано?

     
     
  • 5.335, Аноним (335), 00:24, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Кто-то Винду проверяет что там понаписано?

    А как её проверишь? Не проверишь даже при остром желании.

     
     
  • 6.355, Прохожий (??), 14:06, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то код Винды можно получить для аудита. Но для этого надо иметь веские основания. Например, вы - госучреждение какое. Или работаете на правительство.
     
  • 4.295, Liin (ok), 13:36, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто-то проверят, что в этих файлах понаписали? Нет, нет и нет.

    Конечно проверяют, случаи выпиливания троянов известны.

    А Вы думаете в других открытых проектах по-другому? Наивный Вы, конечно. Погуглите, к примеру, недавний случай с XZ backdoor.

     
  • 2.188, turbo2001 (ok), 00:06, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сам тест у C# тоже любопытный, это тест миллиона таймеров, а не задач.
     
  • 2.201, мяв (?), 03:41, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тоже хотела написать.
    и самое интересное, уровень портабельности идентичный, ибо оба на LLVM.
     
  • 2.227, Аноним (227), 04:40, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот совсем не ожидал того что .NET выступит настолько достойно!
     
  • 2.232, Andrey (??), 07:19, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но при желании в шарпе можно будет с ref поприседать.
     
     
  • 3.246, мяв (?), 09:28, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а Вы в курсе вообще, что такое ref?
    "поприседать" можно будет с unsafe-контекстами. а ref - вполне безопасная и простая вещь.
     

  • 1.14, Аноним (14), 16:55, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Some folks pointed out that in Rust (tokio) it can use a loop iterating over the Vec instead of join_all to avoid the resize to the list introduced by join_all. So I added a new test case Rust (tokio-for) here

    Как всегда с Растом: если просто использовать API как обычно, без тайного знания, всё будет неоптимально

     
     
  • 2.31, Rev (ok), 17:14, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не тайные знания, это понимание базовой функциональности.
     
     
  • 3.368, Вова (?), 21:39, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чушь не пиши! Если задача решена "в лоб" (очевидными классами) и она тормозит, значит разрабы ПЛОХО работали над оптимизацией. Для того ЯОНы и придумали, чтобы НИКОГДА не лезть "под капот" и что-то там химичить с битами/указателями ради выжимания герц.
     
  • 2.32, Аноним (32), 17:15, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Rust (async_std) Стандартная библиотека
     
  • 2.64, Аноним (62), 17:57, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как всегда с Растом: если просто использовать API как обычно, без тайного знания, всё будет неоптимально

    То ли дело сишка или плюсы с их стандартными либами, да?


     

  • 1.19, Ананий (?), 16:59, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Як так, почему пихон жрёт меньше гошечки?
     
     
  • 2.61, Аноним (53), 17:53, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Як так, почему пихон жрёт меньше гошечки?

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

     
     
  • 3.66, анонимище (?), 17:59, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 2.82, Аноним (82), 18:44, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    потому что в приведенном бенчмарке питон создает пустые коллбэки на однопоточном эвентлупе (тоесть внутри питоно-тасок нельзя вызывать ничего вычистительно тяжелого\блокирующего, это просто стейт-машина)

    а в гошечке куда более мощных рантайм, который все эти проблемы решает
    и горутины могут и вычислять и блокировать, а рантайм их по ядрам процессора распределяет
    полноценные грин-треды

    некорректно так сравнивать

     

  • 1.23, Аноним (23), 17:04, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >при одновременном запуске миллиона задач

    А что там по одновременному выполнению миллиона задач?

     
     
  • 2.39, Аноним (38), 17:24, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы про корутины начитались что ли?
     

  • 1.51, Дед Анон (?), 17:42, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А где PHP? Хотелось бы посмотреть на фоне Go
     
     
  • 2.74, Anyone (?), 18:32, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В РНР уже завезли сопрограммы без костылей?
     
     
  • 3.147, Аноним (-), 20:04, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    плюсы-расширения подойдут?
     
  • 3.151, Аноним (-), 20:16, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну, все свои классы и эррейры основные через плюсы компилить и в пхп-экстеншн_со класть - так проще и, возможно, производительней. у меня прод не паблик многоК+, однозначно сказать не могу.
     
  • 3.172, Hck3r (?), 22:20, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Давно завезли
     
  • 3.174, Аноним (-), 22:25, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Fibers (stackful coroutines) начиная с версии 8.1
     

  • 1.59, аНОНИМ (?), 17:51, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    То есть это не про процессы и даже не про OS-треды, а про какие-то у каждой пепяки собственные симулякры. Значимость=0
     
     
  • 2.76, Аноним (-), 18:33, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если ты кликнешь на ссылку на прошлогодний тест, то там тестируются и ядерные треды, но результаты для них показаны только для 10k задач, а для 100k уже написано "I could not launch 100,000 threads on my system, so the threads benchmarks had to be excluded. Probably this could be somehow tweaked byt changing system settings, but after trying for an hour I gave up."

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

     

  • 1.75, Аноним (82), 18:32, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Автор не понимает как устроен tokio-runtime и как им пользоваться

    Автор создал мильен футур, которые ничего не весят и не делают, по-сути мильен пустых коллбэков (только ждут события таймера от epoll\etc)

    по-дефолту в tokio сейчас включен multi_threaded_runtime, и, чтобы использовать который, простых футур недостаточно, а нужно использовать специальный апи task::block_in_place

    https://docs.rs/tokio/latest/tokio/task/index.html#block_in_place

    чтобы на честных условиях сравниваться с Java VirtualThreads и с горутинами Golang

     
     
  • 2.92, jobserver (ok), 18:57, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    интересно каким будет на расте правильное потребление памяти
     
  • 2.114, chdlb (?), 19:12, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    неа, виртуальные потоки в джава это не реальные потоки, так что хоть это не одно и тоже, то что ты пишешь не будет реальным соотвествим

    читай что я ниже пишу про Java и С#

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

     
  • 2.157, morphe (?), 20:42, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > нужно использовать специальный апи task::block_in_place

    Кому нужно? Замени таймер на сеть - и вот у тебя обрабатывается сеть, без всяких block_in_place, а именно что через ожидания событий от epoll.

    Тут сравниваются стеклес корутины (Rust/C#), которые потребляют ровно столько памяти сколько им нужно, и не байтом больше, и стекфул корутины (зелёные потоки/горутины/VirtualThread), которые резервируют под каждую свой виртуальный стек

    И разумеется стеклес в C#/Rust выходят дешевле чем зелёные потоки, и разницы тут не будет между таймером/сетью/прочим работающим через epoll

     
     
  • 3.334, Kuku (?), 23:58, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Наконец-то, хоть один человек сообразил, в чем причина
     

  • 1.78, Аноним (78), 18:40, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я разочарован питоном :(
     
     
  • 2.98, anonymous (??), 19:00, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    python оказался довольно удобным калькулятором с подходящим набором инструментов - jupyter и pandas.
     
     
  • 3.249, Прохожий (??), 10:09, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Некоторые считают pandas тормознутым и с кривым API, переходят на polars поэтому.
     
  • 2.135, Карлос Сношайтилис (ok), 19:35, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Питон прекрасен для прототипов, для любых.

    Но тащить его в нагруженный прод...
    Сил этим героям.

     
     
  • 3.166, Аноним (78), 21:32, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >тащить его в нагруженный прод

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

     
     
  • 4.222, Аноним (-), 04:30, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты будешь удивлен, но питон именно в проде в дохерище крупнейших проектах.
    > Погуглить за тебя?

    Зачем?! Достаточно сказать что гугл сделал го - для замены у себя в проде питона :). Это все что надо знать о использовании питона в проде и его производительности.

     
     
  • 5.261, чатжпт (?), 10:31, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем это (замена питона на го) гуглу понятно, с их нагрузками. Зачем это остальным - не понятно.
     
     
  • 6.325, Аноним (-), 19:59, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем это (замена питона на го) гуглу понятно, с их нагрузками. Зачем
    > это остальным - не понятно.

    Затем что у них денег (на сервера и проч) - еще меньше чем у гугеля. Вон там тушка с VPSкой отписал как оно. Первое же минимальное нашествие ботов, да даже чуть ли не активировавшиеся к ночи краулеры - положит сервак на лопатки с такой нагрузочной способностью.

    Да и фреймворки на питоне - ужасные и все сложно и криво. Так что в вебе питон по сути вымер, и игогошка его там пылающим мечом просто косит. Все знакомые пыхпшники и питонисты на это в вебе свалили.

     
  • 3.169, Аноним (169), 21:53, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема не в самом питоне, и даже не в том, что он интерпретируемый. Если хотите понять, почему дефлотные библиотеки (и подавляющее большинство того, что пишут вокруг них, потому что одни и те же примитивы использую) - говно, посмотрите, что cpython делает, когда вы, хз, строки пополам пилите, или делаете ещё какие-то операции, которые не меняют память, а только меняют начало и конец объекта, который ДОЛЖЕН БЫЛ БЫТЬ просто двумя указателями. При этом некоторые методы объектов ВНЕЗАПНО работают эффективнее, хотя выглядит это как полный бред (гуглите сравнение скорости слайсинга bytearray через [1:] и del [0])
     
     
  • 4.240, Аноним (240), 08:25, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблема что в реальной жизни и реальных веб задачах производительность языка не имеет значения потому что упираешься в производительность базы данных, а не кода. Даже на пхп. Все эти задачи вычисления пи на скорость имеют мало отношения к реальной жизни. Причем никто не пишет бенс на каком языке лучше всего написать базу данных. Там итак все без тестов понятно. И языка на котором написаны все нормальные базы данных в сабже например вообще нет.
     
     
  • 5.250, Прохожий (??), 10:13, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >нормальные базы

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

     
     
  • 6.268, Аноним (268), 10:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну раз тебе функционал не нужен пиши данные своего Фейсбука в редис и скидывай на диск. Рано или поздно все равно наступит предел производительности.
     
     
  • 7.305, Прохожий (??), 14:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Где я сказал, что функциональность не нужна? Я просто заметил об ограниченности понимания этого термина предыдущим высказывающимся.
     

  • 1.83, jobserver (ok), 18:45, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    java 8ГБ. его тест на java для 10_000_000 зелёных потоков.
     
     
  • 2.111, chdlb (?), 19:10, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    этот тест кал читай ниже

    а в джаве виртуальные потоки фиг пойми сколько будут создавать реальных потоков в ОС

     
     
  • 3.118, Аноним (-), 19:14, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    здесь про корутины посты уместны?
     

  • 1.95, RM (ok), 18:58, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Erlang нет, нещитово
     
  • 1.96, chdlb (?), 18:59, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я может чего-то не понимаю, но вот это:

    int numTasks = int.Parse(args[0]);
    List<Task> tasks = new List<Task>();

    for (int i = 0; i < numTasks; i++)
    {
        tasks.Add(Task.Delay(TimeSpan.FromSeconds(10)));
    }

    await Task.WhenAll(tasks);

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

    притом Task.Delay ничего не делает, только асинхронно ждет НЕ БЛОКИРУЯ поток, правильнее было бы запустить Thread.Sleep, но в других языках похожи подходы, например Rust тоже не блокирует поток, но даже если тесты эквивалентны, то что они тестируют? производительность DFSM для тасков? бред

    кстати здесь нет capcacity для листа, т.е. они плюсуют время на релокейшен внутреннего массива для листа (4,8,16,32) и тд, это же лютая дичь, плюньте в морду тем кто писал такие тесты

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

    for (int i = 0; i < numTasks; i++)
    {
        tasks.Add(Task.Run(() => {
            Console.WriteLine(ThreadPool.ThreadCount);
        }));
    }

    Output:
    4
    4
    5
    5
    16
    16
    16
    6
    16
    7
    16
    8
    16
    9
    16
    16
    16
    16
    16
    10
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16
    16

    он уперся в 16 ядер которые у меня есть и точка

     
     
  • 2.171, Аноним (-), 22:15, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не убедительно Твои потоки могут жить нетривиальное время только если они будут... большой текст свёрнут, показать
     
  • 2.178, Аноним (-), 22:40, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лол, так ThreadPool.ThreadCount это же количество ядерных потоков в пуле, так? Их *естественно* будет столько сколько ядер или может чуть больше чем ядер. Нет никакого смысла увеличивать дальше, даже более того есть огромный смысл не увеличивать, чтобы снизить нагрузку на ядерный шедулер, который со всеми его расчётами приоритетов и переключением между kernel и user spaces только процессорные такты жрёт.


    Так что у меня есть уверенный ответ на:

    > Я может чего-то не понимаю

    Да, ты вообще ничего не понимаешь. Несёшь какую-то чушь, пытаясь увидеть миллион ядерных тредов там, где речь про миллион асинхронных тасков, выполненных гринтредами.

     
     
  • 3.189, chdlb (?), 00:21, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.252, Аноним (-), 10:17, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.331, Аноним (331), 20:56, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты немного путаешься в понимании. Task.Delay как раз используется, чтобы показать, как система обрабатывает большое количество асинхронных операций без блокировки потоков. Это тестирование способности управления задачами, а не ThreadPool. Thread.Sleep тут вообще неуместен, потому что он блокирует поток, ломая саму идею асинхронности. Лимит в 16 потоков связан с количеством ядер, но к тесту он не имеет прямого отношения — тест про управление задачами, а не про пределы ThreadPool.
     
     
  • 3.371, chdlb (?), 23:01, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну откуда вы лезете В понимании кого чего Тебя ОК согласен Delay там, чтобы ... большой текст свёрнут, показать
     

  • 1.120, Пишу с 3 пня (?), 19:16, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Интересно бы сравнить все это на старом железе типа 3 пня без читерства в виде задействованных инструкций.
     
  • 1.160, Аноним (160), 21:00, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну-ну очередное сравнение мягкого, пушистого и розового? Запустили бы хотя бы что-нить посчитать в этих задачах, даже 2+2 и то было был бы маленький, но смысл, а так вообще дурoсть, для любителей обсасывать дурoсти.
     
     
  • 2.173, Аноним (-), 22:24, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Асинхронный рантайм не для того, чтобы считать, он для того, чтобы мультиплексир... большой текст свёрнут, показать
     
     
  • 3.255, Прохожий (??), 10:22, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >С расчётами туго, потому что они по-сути блокирующие операции

    Это зависит от того, как многозадачность реализована. Если она кооперативная (потоку даётся квант времени на работу, потом переходим к следующему потоку), ничего там блокироваться не будет.

     
     
  • 4.279, Аноним (-), 12:16, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Если она кооперативная (потоку даётся квант времени на работу, потом переходим к следующему потоку)

    Если потоку даётся квант времени и рантайм/ядро отнимает управление у потока по истечении этого кванта, то это вытесняющая многозадачность (поток вытесняется). Кооперативная, это когда поток кооперирует с рантаймом и другими потоками и сам отдаёт управление. В асинхронных рантаймах используется именно кооперативная многозадачность, потому что с ней меньше накладных расходов на организацию всего этого хозяйства. А это значит, что если гринтред сделает while(1);, то весь рантайм встанет колом без какой-либо возможности продолжить работу.

     
     
  • 5.298, Прохожий (??), 14:12, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Определение термина кооперативной (вытесняющей по-вашему) многозадачности я взял из одной статьи про асинхронщину в Rust. Собственно, не в термине суть. Кажется в Го или Свифт такое было реализовано. В смысле такой планировщик потоков (корутин). Но я не специалист по этим языкам. Пересказываю то, что прочитал. А так - да, вы правы. В том же Питоне асинхронная функция станет колом, если начнёт что-то вычислять.
     
     
  • 6.326, Диды (ok), 20:07, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Определение термина кооперативной (вытесняющей по-вашему) многозадачности я взял из одной статьи про асинхронщину в Rust

    Пропал дом (с)

     
     
  • 7.376, Прохожий (??), 04:38, 02/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вам шашечки или ехать? (c)
     
  • 2.233, Аноним (206), 07:35, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем создавать пул потоков, что за странная идея? Пусть ядро занимается тем, что оно хорошо умеет: управляет потоками.
     
     
  • 3.280, Аноним (-), 12:23, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ядро очень медленно стартует потоки. Лучше стартануть их однократно, и потом многократно использовать.
     
     
  • 4.347, Аноним (206), 08:51, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Значит в ядре и надо фиксить это, а не танцевать вокруг языка программирования.
     

  • 1.162, Легивон (?), 21:15, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Го приятно порадовал. На практически осмысленном количестве рутин (тысячи) он второй. Обходит его только ненужная ржавчина.
    Хорошо сделали!
     
     
  • 2.224, Аноним (-), 04:32, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Го приятно порадовал. На практически осмысленном количестве рутин (тысячи) он второй. Обходит
    > его только ненужная ржавчина.
    > Хорошо сделали!

    Ржавчина настолько ненужная - что успешно выпилила го с серверов Dropbox'а, на минуточку :)

     
     
  • 3.235, Легивон (?), 07:51, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что такое Dropbox? Это какой-то проприетарный Saas сторадж для файлов из 90х? Чем это лучше self-hosted или пускай даже public cloud s3?
    Почему мнение проприетарщиков должно быть важно?
     
     
  • 4.262, Прохожий (??), 10:33, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Чем это лучше self-hosted или пускай даже public cloud s3?

    Тем, что людей, собирающих свои собственные велосипеды, гораздо меньше в мире, чем людей, покупающих готовые. Про специализацию и разделение труда слышали когда-нибудь? Вот это оно.

     
  • 4.345, Аноним (-), 05:20, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Что такое Dropbox? Это какой-то проприетарный Saas сторадж для файлов из 90х?

    Это пример довольно нагруженного вебсервиса для вываливания филезов. Они сначала накорябали на питоне. Вскоре они заметили что с "докупите серверов" есть какая-то подстава. И переписали на go. А потом и на хрусте как раз. По все тем же причинам.

    > Чем это лучше self-hosted или пускай даже public cloud s3?
    > Почему мнение проприетарщиков должно быть важно?

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

     
  • 2.259, Читатель разных статей про Golang (?), 10:29, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всё-таки среди двух названных языков более ненужный - это Го: убогие абстракции, убогая система типов, убогая обработка ошибок, убогая интероперабельность с другими языками программирования, убогая кросс-платформенность (кривой API по работе с файлами для Windows, например), непредсказуемая мутабельность переменных внутри функций. И в довершение ко всему сказанному - GC.
    Кажущаяся простота Го обманчива.
     

  • 1.176, Аноним (176), 22:32, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    если вы столкнулись с необходимостью создать миллион горутин то надо выпит таблеточку и лечь спать а утром подумать о смене работы
     
     
  • 2.186, Аноним (268), 23:37, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Первый нормальный комментарий во всем треде.
     
  • 2.197, голос_из_леса (ok), 01:59, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ему уже попытались объяснить...

    https://github.com/hez2010/async-runtimes-benchmarks-2024/pull/3

     

  • 1.184, Аноним (185), 23:34, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >при выполнении кода, создающего миллион параллельно выполняемых сопрограмм

    Ну а на более низком уровне это как выглядит: fork(2), clone(2) ?

     
     
  • 2.216, Аноним (-), 04:24, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну а на более низком уровне это как выглядит: fork(2), clone(2) ?

    Погуглите что такое корутины. До fork или clone они не имеют никакого отношения.

     
  • 2.225, Аноним (-), 04:34, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>при выполнении кода, создающего миллион параллельно выполняемых сопрограмм
    > Ну а на более низком уровне это как выглядит: fork(2), clone(2) ?

    Корутины могут и свой тред шедулить. А запуск полноценного треда в Linux - ну да, clone() с определенными флагами. Собссно тред, процесс и контейнер отличаются в основном флагами и что там у них unshare()'d как таковое. У треда почти все общее, самая легкая конструкция. В процессе unshared больше, а в контейнере - еще больше.

     
  • 2.281, Аноним (281), 12:24, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Корутины вошли в моду, когда выяснилось, что fork и clone — слишком тяжелы и несут слишком много накладных расходов, как по памяти, так и по вычислительным ресурсам.

    Это C10M Problem — задача из мира серверов и обработки гигантского количества одновременно приходящих соединений.

    https://ru.wikipedia.org/wiki/C10k

    Только в той реализации, в которой оно представлено в данном бенчмарке, это не показывает ровным счётом ничего.

     

  • 1.209, Аноним (206), 04:00, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какие вообще отношение к многозадачности имеет язык программирования?

    Нельзя создать задачу иначе чем через системный вызов.

     
     
  • 2.226, Аноним (-), 04:37, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Какие вообще отношение к многозадачности имеет язык программирования?
    > Нельзя создать задачу иначе чем через системный вызов.

    Вообще-то корутины это как раз пример создания задач без системных вызовов, на минуточку. Оказывается шедулить задачи можно и в пределех своего треда(ов). Ну вот такой вложенный шедулинг, ничему не противоречит.

    Есть всякие граничные вещи - скажем threads.

     
     
  • 3.228, Аноним (206), 06:18, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Шедулить можно сколько угодно, но ваши задачи не будут параллельно выполняться, значит толку от них никакого нет.
     
     
  • 4.263, Прохожий (??), 10:38, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Толк всё-таки есть, если мы говорим про такие задачи, которые могут какое-то время ожидать операций ввода-вывода. Почитайте про асинхронщину на досуге.
     
  • 4.327, Аноним (327), 20:16, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то иногда толк все же есть Представь себе что я хочу програмить обработ... большой текст свёрнут, показать
     
     
  • 5.346, Аноним (206), 06:43, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Магии не существует. Параллельный ввод-вывод это не магические операции, а точно такие же инструкции cpu, которые читают байты из одной памяти и перекладывают в другую.

    Если ввода не ждёт программа, значит его ждёт ядро. Вы можете использовать "асинхронный ввод и вывод" (который был стандартизирован в posix 2001, 23 года назад), (https://linux.die.net/man/7/aio), но по сути это то же самое, что "сделать поток и заставить его подождать".

     

  • 1.231, голос_из_леса (ok), 06:58, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Все логично. Победили тесты где в качестве функции использовались функции стандартной библиотеки. Где сами создавали функцию, там и память откушали.

    Автору теста жирную двойку.

     
     
  • 2.237, Аноним (240), 08:04, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это каждому понятно что в этом тесте победили те, кого хотели выбрать победителем теста создатели теста. Вплоть до того что невозможно проверить проводился ли тест в реальности или нет и с какими настройками.
     
  • 2.264, Прохожий (??), 10:39, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Библиотека tokio на является стандартной для языка Rust.
     

  • 1.238, Аноним (240), 08:16, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    При желании код на там же р#сте можно оптимизировать сколько угодно долго а том числе желая всякие ансейфные штуки https://habr.com/ru/articles/598219/ И при том же желании не делать этого для других языков.
     
  • 1.239, Аноним (239), 08:18, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Попробовали бы Nim с Malebolgia. А в этом представлении — баловство.
     
     
  • 2.245, Аноним (245), 09:28, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да о чём говорить, если зиг не представлен. Тогда у всех растомананов сразу бы спала пелена с глаз.
     
     
  • 3.266, Прохожий (??), 10:42, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 3.299, Прохожий (??), 14:23, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Современному веб рабу

    В Rust можно неиспользовать рантайм при желании. То есть, программисту предоставлен выбор.

    Про абстракции, которые никому не нужны. Именно поэтому программисты на Си изобретают хеш-мап в своём коде из проекта в проект. Да?

     
     
  • 4.312, Аноним (245), 17:49, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сам ты раб.
    В расте хеш-мап при работе не занимает память и не задействует такты процессора, а работает исключительно на тайной магии. Да?
     
     
  • 5.357, Прохожий (??), 14:18, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Сам ты раб.

    Я отвечал человеку, который сам себя назвал "Современный веб раб". Его сообщение сначала заблокировал, а потом удалил модератор. Никого оскорблять не хотел.

    >В расте хеш-мап при работе не занимает память и не задействует такты процессора, а работает исключительно на тайной магии. Да?

    Причём здесь это? Речь шла о " ненужных абстракция". Оказывается, они нужны. Но в одних языках их реализация стоит гораздо дороже, чем в других.

     

  • 1.243, Илья (??), 08:49, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    int numTasks = int.Parse(args[0]);
    List<Task> tasks = new List<Task>();
    for (int i = 0; i < numTasks; i++)
    {
        tasks.Add(Task.Delay(TimeSpan.FromSeconds(10)));
    }

    await Task.WhenAll(tasks);


    На сишарпе надо было использовать ValueTask - тогда бы память практически не выделялась.

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

    Таким образом, c# работал бы со скоростью раста

     
     
  • 2.286, Нуну (?), 13:09, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    при ValueTask память не выделяется в куче отдельно для этого экземпляра ValueTask, но память он все равно занимает и будет она заниматься в куче внутри List
    А вот Task.WhenAll создает дополнительный массив для себя.
     
     
  • 3.370, Вова (?), 21:51, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем WhenAll'у создавать ЕЩЁ массив, если ему и так передали массив?!  Он просто будет по нему бегать, пока все задачи не завершатся.
     
     
  • 4.375, Нуну (?), 03:43, 02/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    аргумент принимается. они в итоге убрали создание защитного массива вроде в дотнет 8, а так как в тесте дотнет, в котором это есть, то я признаю что мое замечание в этом аспекте лишается силы
     

  • 1.244, Илья (??), 08:52, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Про питон - враньё. Скорее всего под результат подогнали. При реальной нагрузке производительность примерно в 10-50 раз падает.
     
     
  • 2.329, Аноним (-), 20:22, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Про питон - враньё. Скорее всего под результат подогнали. При реальной нагрузке
    > производительность примерно в 10-50 раз падает.

    Да просто обычный синтетический бенч, они все такие.

     

  • 1.247, Аноним (247), 09:47, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > для типовой программы, реализованной на языках программирования

    Читаю все эти опусы и задаю вопрос, а какая разница, на каком высокоуровневом языке исходники?

     
     
  • 2.267, Прохожий (??), 10:46, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разница такая, что высокий уровень (абстракции) в том или ином языке обеспечивается разными способами. Например, в Rust такие абстракции бесплатные. А в том же Питоне - нет. Как и в Го, Джаве.
     
     
  • 3.284, Аноним (268), 13:08, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В Расте все платное. Поэтому им никто не пользуется. Кроме писателей синтетических тестов.
     
     
  • 4.300, Прохожий (??), 14:27, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Гугл в Андроиде. Амазон в инфраструктуре. Клаудфлэр в прокси. Дропбокс, Дискорд в своих програмах. Мозилла в браузере. Эти все - никто?
     
     
  • 5.373, Аноним (373), 23:05, 01/12/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.288, Вы забыли заполнить поле Name (?), 13:10, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Например, в Rust такие абстракции бесплатные. А в том же Питоне - нет. Как и в Го, Джаве.

    Что такое бесплатная абстракция? Корутина — это абстракция? Да. Бесплатная с точки зрения ресурсов? Нет. От языка не зависит.

     
     
  • 4.301, Прохожий (??), 14:32, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Бесплатная с точки зрения ресурсов? Нет. От языка не зависит.

    Зависит, конечно. Корутины в Го более дорогие, чем асинхронщина в Раст, читал. Бесплатная абстракция - это такая абстракция, которая кроме своего собственного кода не требует каких-то дополнительных ресурсов для своей реализации. Например, выделение памяти в куче вместо использования памяти в стеке. И так далее.

    Если интересно, могу поискать статью на эту тему про асинхронщину в Раст.

     
  • 4.330, Аноним (-), 20:23, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Например, в Rust такие абстракции бесплатные. А в том же Питоне - нет. Как и в Го, Джаве.
    > Что такое бесплатная абстракция? Корутина — это абстракция? Да. Бесплатная с точки
    > зрения ресурсов? Нет. От языка не зависит.

    Как показал этот пример, таки - от языка, походу зависит. И от реализации. Это так странно?

     

  • 1.253, Аноним (251), 10:20, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Для задач такого типа был придуман Erlang.
     
     
  • 2.269, Аноним (268), 10:51, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для того чтобы не верить синтетика достойно иметь мозг.
     
     
  • 3.306, Прохожий (??), 14:59, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А кому тогда верить? Ну кроме каких-то всем известных вещей, типа, интерпретатор всегда медленнее компилятора.
     

  • 1.277, Аноним (277), 11:56, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Как они меряли память?
    Нет вообще ни слова про методику измерения
     
     
  • 2.287, Аноним (268), 13:10, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Посмотри на автора бенчмарка. Это какой-то недоучившийся студент. Непонятно зачем мы его тут вообще обсуждаем.
     
     
  • 3.310, Аноним (310), 16:07, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Автор бенчмарка матёрый разработчик на Java https://pkolaczk.github.io/about/
    студент лишь повторил тест год спустя с новыми версиями.
     

  • 1.278, Аноним (277), 12:00, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Kotlin Корутины обошли яву и даже native image с ~90000 кб на 100000 задач
     
  • 1.285, Аноним (285), 13:08, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Добавьте в тест Haskell, он в этом плане всех порвет. Ну я так предполагаю.
     
  • 1.296, Liin (ok), 13:39, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    К сожалению, все эти синтетические тесты имеют крайне мало отношения к реальности. В реальной жизни код куда сложнее, а средний разработчик довольно мало знает/помнит об оптимальной конструкции с точки зрения производительности. Вот если бы сравнили реальный код, написанный средними разрабами - это было бы интересно, хоть и с претензиями на объективность.
     
     
  • 2.303, Прохожий (??), 14:42, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >а средний разработчик довольно мало знает/помнит об оптимальной конструкции с точки зрения производительности

    У нас, например, чтобы средний разработчик об этом не забывал, прямо в договоре с клиентом прописывается гарантированное время реакции программы на действия пользователя.

    Код средних разработчиков никому не интересен. Потому что они, во-первых, средние. А во-вторых, как вы заметили, часто о чем-то забывают.

    Ну и напоследок. Безотносительно качества разработчика. Код на Питоне всегда будет более медленным, чем код на Си, Раст и других подобных языках.

     
     
  • 3.307, Liin (ok), 15:04, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Код на Питоне всегда будет более медленным, чем код на Си, Раст и других подобных языках.

    Кэп, ты? Вы думаете, это откровение для кого-то? Вопрос же не в том, что медленнее, а насколько медленнее.

     
     
  • 4.358, Прохожий (??), 14:28, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Вы думаете, это откровение для кого-то?

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

    >Вопрос же не в том, что медленнее, а насколько медленнее.

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

     

  • 1.313, Аноним (313), 17:49, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А вы не задумывались что возможно golang действительно готов все это параллельно обрабатывать? Другой вопрос что все одно столько тредов процесса нет, а значит и полноценных горутин зачем столько. И это влпрос к golang. Однако вче равно хотелось бы не только графики потребления памяти, но и графики скорости выполнения всех этих задач, а то может оказаться что на деле остальные то в один поток делать будут миллиард лет
     
     
  • 2.332, Аноним (245), 21:23, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так сделай, разрешаю.
     

  • 1.348, Аноним (206), 08:55, 01/12/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для таких задач существует Cisco Chez Scheme.
     
  • 1.369, Вова (?), 21:46, 01/12/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тест очевидно тyn0й, нет никакого смысла в миллионе задач! Для того многопроцы и придумали, чтобы всё нещадно параллелить в пределах разумного (т.е. насколько тянет ОСь). А если одной системы недостаточно - распределённые вычисления.

    А главное, да пофиг все эти выкрутасы с памятью! Вы много решаете таких задач? Я - ни одной. Вот и занимайтесь РЕАЛЬНЫМИ задачами!

     
     
  • 2.372, Аноним (373), 23:02, 01/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А ну тогда добавьте что и для параллельности нужна видеокарта, именно они такими задачами сейчас занимаются. И я говорю об ИИ.
     
  • 2.374, Аноним (-), 02:23, 02/12/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру