The OpenNET Project / Index page

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



"LogoFAIL - атака на UEFI-прошивки через подстановку вредоносных логотипов"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "LogoFAIL - атака на UEFI-прошивки через подстановку вредонос..." +1 +/
Сообщение от Аноним (116), 02-Дек-23, 02:30 
> 3) Всяких GC и прочего треша убивающего перфоманс и предсказуемость быть не обязано.

Вернитесь в реальность. Вот вам видео, которое заставит о ней задуматься:
https://www.youtube.com/watch?v=qbKGw8MQ0i8

Если нет 50 минут времени спойлер: видео про то, что никакие операции delete и никакие системные вызовы не бесплатны (даже если у вас rust). Видео про то, что если сделать так, что ваша программа работает быстро на Windows, то она начнет работать быстрее и на Linux.

От себя дополню, что в любом реальном приложении, работающем с большим количеством файлов, сокетов и с базами операция удаления данных может стать жутко медленной. Причем особенно сильно это кусает тех, кто пишет на С++. Вот есть у вас небольшая абстракция:
1. Интерфейс / абстрактный класс
2. Наследник, выделяющий динамическую память в конструкторе и удаляющий в виртуальном деструкторе
3. Наследник наследника, выделяющий динамическую память в конструкторе и удаляющий в деструкторе
Удаление из памяти большой коллекции таких объектов обычной операцией delete приведет к фризу приложения, если объектов слишком много (грид загрузили из базы, например, отобразили и потом решили закрыть форму и удалить объекты из памяти)

Чтобы такое правильно удалить нужно:
- Создать "отложенный таск", то есть задачу на удаление в отдельных тредах
- Создать функционал, который позволит передать объекты на удаление и удалить их чуть позже
- Считать ссылки, чтобы не удалить случайно те объекты, которые использует что-то еще
Если вам нужно "лениво" подгружать данные из источника и что-то кэшировать, то эта штука станет еще сложнее.

И вот после того как вы всё это сделали, я вас лично поздравляю! Вы переизобрели собственный GC имени собственного приложения. У меня 2 вопроса:
- Вы точно-точно хорошо провели время изобретая собственный велосипед?
- Какова квадратность колёс вашего велосипеда?

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

> Надеюсь это объясняет почему ява и дотнет на этом фоне выглядят как легаси, а их носители - как динозавры на пешеходном переходе. Каковыми и являются. Им это нечем крыть. Вообще совсем.

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

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
LogoFAIL - атака на UEFI-прошивки через подстановку вредоносных логотипов, opennews, 01-Дек-23, 22:11  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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