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 тысяч задач.

  • Запуск миллиона задач.

  • Похожий прошлогодний тест с запуском миллиона задач.



  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 обязательно


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

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

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

     
     
  • 6.127, Совершенно другой аноним (?), 19:23, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Можно воспользоваться библиотекой corutine h от Simon Tatham необходимая часть ... большой текст свёрнут, показать
     
     
  • 7.191, pavlinux (ok), 00:33, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > у меня в Windows XP 32bit по памяти (Virtual Size) заняло 9736К.

    Ща тя Растыры закидают


     
  • 6.190, pavlinux (ok), 00:31, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Абдолноним, задание читал?

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

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

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

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

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

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

     
  • 4.152, bircoph (ok), 20:21, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да? А мужики-то не знают:
    https://github.com/tidwall/neco
     
  • 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 [^] [^^] [^^^] [ответить]  
  • +/
    > Отправлено Барашек, 29-Ноя-24 16:44
    > тренера не играют

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

     
  • 2.12, Аноним (-), 16:52, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • –11 +/
     
     
  • 3.21, ijuij (?), 17:00, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 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 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.44, Аноним (45), 17:29, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А где C/C++?

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

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

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

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

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

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

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

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

     
  • 4.63, Аноним (58), 17:54, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> А в 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 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В си есть возможность их сделать - и ест реализации. И если для хруста можно брать сторонние "фреймворки" то почему и для си так же нельзя?!

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

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

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

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

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

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

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

    "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?
     

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

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

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

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

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

     

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

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

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

     
  • 3.163, Аноним (163), 21:22, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Использую в арче, все устраивает. Только скорость появления новых версий в репозиториях так себе
     
  • 3.200, мяв (?), 03:38, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да.
    mono хорошо работает. правда, в девуане были какие-то непонятки с GAC, из-за чего он не работал в 11й версии.
    сейчас все норм.
    больше скажу, даже под freebsd все хорошо.
     
  • 2.65, Аноним (65), 17:58, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А джава по памяти. Посмеялся, спасибо.
     
  • 2.140, Анон1110м (?), 19:47, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может всё таки не C# а .NET?
     

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

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

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

     
     
  • 5.87, Аноним (-), 18:54, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да неее, сразу на раст)))
     
  • 4.47, НяшМяш (ok), 17:37, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Потому что без уязвимостей потом денег за исправление не заплатят.
     
     
  • 5.89, Аноним (-), 18:56, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да, понимаю, норм. презентация - это святое
     
  • 5.204, Советский инженер и пенсионер 79 лет (?), 03:53, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.50, Вася Пупкин (?), 17:41, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Замени го на питон. И плюсы на раст. и тогда все будет правильно, быстрее, удобно и надежнее.
     
     
  • 4.60, Аноним (53), 17:51, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Замени го на питон.

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

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

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

     
     
  • 5.91, Аноним (-), 18:57, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну да, плюсы раз в три года только ломаются хДДДД
     
  • 4.182, Аноним (182), 23:14, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А я пришёл к выводу что проще сразу писать на Rust Скорость разработки на нём н... большой текст свёрнут, показать
     
     
  • 5.192, pavlinux (ok), 00:35, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > крейтами, тулингом,   дебаге,  кросс-компиляцией, деплоем.

    Загоните этого хипстера обратно в офис или переводи на русский

     
     
  • 6.194, Аноним (-), 01:34, 30/11/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 +/
    Сливает даже Питону)
     

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

  • 1.11, Шарп (ok), 16:52, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    По сути 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 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а Руби чем вам не угодил?
     
  • 4.49, НяшМяш (ok), 17:41, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Пакет ноды занимает 50-60 мегабайт в моём дистрибутиве после распаковки. Даже меньше, чем питон. Найти приложение на ноде с гигабайтами исходников надо ещё постараться. Да и есть кучи компилеров, транспилеров и бандлеров, чтобы это всё упаковать в компактный вид.
     
     
  • 5.145, Анон1110м (?), 19:51, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это всё без разницы потому что ЯваСцэнарий один из худших языков на планете.
     
  • 5.177, fuggy (ok), 22:40, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Легко средний проект занимает 50-90К файлов. Всё это добро занимает 400-700МБ. И это только исходники. Ведь каждый пакет это однострочная функцию, к которой в комплекте source map, файл лицензии, readme, changelog, тесты, данные для тестов. И всё это только для одного пакета из одной функции. И таких пакетов тысячи.
     
  • 4.97, Аноним (-), 18:59, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.126, Аноним (124), 19:23, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не самый. Есть ещё Electron - это нода вместе с движком от Хромиума...
     
  • 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в, это не самая худшая практика)
     
  • 2.188, turbo2001 (ok), 00:06, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сам тест у C# тоже любопытный, это тест миллиона таймеров, а не задач.
     
  • 2.201, мяв (?), 03:41, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    тоже хотела написать.
    и самое интересное, уровень портабельности идентичный, ибо оба на LLVM.
     
  • 2.227, Аноним (227), 04:40, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот совсем не ожидал того что .NET выступит настолько достойно!
     

  • 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.205, Советский инженер и пенсионер 79 лет (?), 03:55, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты
    Kлoyн
    У тебя мoзгa нет чтобы что-то там понимать
    Ты же тpaнсгeндepный биoмуcop
    Скоро всех нaйдeм, кacтриpyeм и на Koлымy с киpкой!!!
    Мpaзь!
     
  • 2.32, Аноним (32), 17:15, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Rust (async_std) Стандартная библиотека
     
  • 2.64, Аноним (62), 17:57, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Как всегда с Растом: если просто использовать API как обычно, без тайного знания, всё будет неоптимально

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


     
     
  • 3.207, Советский инженер и пенсионер 79 лет (?), 03:57, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.208, Советский инженер и пенсионер 79 лет (?), 03:58, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты жу идищт! !!! !
    Сын осла и пpoститутки ! !! !
    Вceх найдём
    Всех yбьём. . .!
     

  • 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 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 4.221, Аноним (-), 04:28, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.82, Аноним (82), 18:44, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    потому что в приведенном бенчмарке питон создает пустые коллбэки на однопоточном эвентлупе (тоесть внутри питоно-тасок нельзя вызывать ничего вычистительно тяжелого\блокирующего, это просто стейт-машина)

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

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

     

  • 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 [^] [^^] [^^^] [ответить]  
  • +/
    плюсы-расширения подойдут?
     
  • 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 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если ты кликнешь на ссылку на прошлогодний тест, то там тестируются и ядерные треды, но результаты для них показаны только для 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.130, Аноним (-), 19:25, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вот вам когда чемоданы заедут - будете пистить.

    до этого момента - вам суждено и, на минуточку, позволено, опробовать всё самому и задать направление в оупенсорс. не проипите.

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

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

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

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

     

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

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

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

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

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

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

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

  • 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 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я может чего-то не понимаю, но вот это:

    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 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не убедительно Твои потоки могут жить нетривиальное время только если они будут... большой текст свёрнут, показать
     
     
  • 3.193, chdlb (?), 00:39, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ты лучше не пиши больше, а то маршрутка подняться не может
     
  • 2.178, Аноним (-), 22:40, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 3.189, chdlb (?), 00:21, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

     ....ответы скрыты (4)

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

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

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

     

  • 1.176, Аноним (176), 22:32, 29/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    если вы столкнулись с необходимостью создать миллион горутин то надо выпит таблеточку и лечь спать а утром подумать о смене работы
     
     
  • 2.186, Аноним (186), 23:37, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 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.187, Аноним (186), 23:38, 29/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.216, Аноним (-), 04:24, 30/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.225, Аноним (-), 04:34, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>при выполнении кода, создающего миллион параллельно выполняемых сопрограмм
    > Ну а на более низком уровне это как выглядит: fork(2), clone(2) ?

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

     

  • 1.198, Семен (??), 02:50, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Очередной тест на тупых обезьян на опеннете... А ведь у большей части горе комментаторов нет за душой реальных проектов даже в 10к строк, зато эксперты по производительности, начитавшихся таких же горе тестеров, которые нормально методологию не могут разработать и использовать объективные тесты, вместо измерения погоды на марсе ректальным градусником. Не понятно, как проводились тесты, любой язык можно испортить и сказать, смотрите какой он плохой, кривым кодом и не правильными настройками. Та жа бигдата в очень большом количестве использует Java, а не С# или Go.
    Собственно jvm считаются одними из самым прогрессивных виртуальных маших, и имеют кучу настроек для сборки мусора, по тестам не понятно какой сборщик мусора использовался и с какими настройками, а там может быть отложенная чистка, чтобы не замедлять код во время работы и не ставить на паузу ради чистки heap, плюс heap кешируется, чтобы не отдавать блоки памяти ОС, и приложение могло быстро переиспользовать эту паять. Над комментами насчет медленной джавы поржал, это осталось в 5й джаве, а оверхед современных виртуальных машин не превышает пары процентов, и приближается к машинному кода, я даже делал тесты на математические вычисления и в некоторых Java в 2 раза быстрее С кода была, за счет Jit и кеширования. Собственно какой язык не бери, все пригодны для продакшена, портят языки только программисты с непониманием их особенностей и не оптимальными алгоритмами, не раз проходили, что замена пары строк кода этих горе программистов могла ускорить код в десятки и сотни раз. Я еще не говорю, про то, что кучу дорого инженерного софта написано на Java, и использует ее для обработки больших данных и симуляции разных физических процессов.

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

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

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

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

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

     

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



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

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