А с точки зрения языка разницы нет. Компилятор может поместить переменную на стеке, а может сразу в регистре, а может вообще нигде не размещать, а полностью соптимизировать. Указать напрямую вы ему не можете, и от того, используются ли классы, это опять же не зависит.
тогда преимущество конкретной библиотеки будет в том, что ее сделали эти боги
Скорее в том, что это сделали один раз для всех, и программист, который хочет просто сделать фильтрацию изображения окном 3x3, может не вникать в микрооптимизации.
Я говорил именно о скорости исполнения (скорость и удобство написания кода само собой разумеются). Там небольшие матрицы на стеке размещаются. И все операции по возможности через simd инструкции оптимизируются. Использование классов и размещение объектов в куче это вообще ортогональные вещи.
В моей практике для таких задач применялись библиотеки типа Eigen, которые несмотря на использование классов и прочих преимуществ (современных) плюсов, скорее всего будут быстрее чем код, написанный "классическим подходом, без библиотек".
Почему? У них как раз легко заменяются отдельные комплектующие (иногда даже с возможностью апгрейда) и доступны альтернативные ОС. Вроде бы ровно то, что вы спрашивали.
Fairphone, Librem 5, Pinephone. Всё нишевые продукты, интересные лишь кучке энтузиастов, но тем не менее живые. А массовому пользователю это не интересно.
первые версии GCC в 90-х годах вообще "Ханойские башни" на девелоперской машине запускали, когда обнаруживали в коде UB
Побуду занудой: там было unspecified behaviour, то есть определяемое платформой, а не стандартом. А конкретно обработка директивы #pragma. UB (undefined behaviour) за исключением очевидных частных случаев вроде int a = *(int*)NULL; вот так вот просто детектировать при компиляции нельзя (было бы иначе - это поведение бы уже давно стандартизировали как ошибку компиляции).
SSD от Samsung на 512Гб - 5 лет работы системным диском в домашнем ПК, до этого 7 или 8 лет стоял 64Гб от OCZ, заменён был исключительно потому что объёма и скорости перестало хватать. Год назад добавился 4Тб SSD от WD.
microSD карточка на 256Гб (кажется Kingston) - 3 года. Основному смартфону 1.5 года, несколько предыдущих тоже продолжают работать, только у большинства сильно деградировала батарейка.
Заменять SSD, SD или смартфон из-за отказа флеш-памяти не приходилось ни разу.
Это хорошее объяснение отсутствия существенного спада миграции, но не резкого роста. Если правда сейчас переезжает втрое больше людей, чем в прошлом году, должно было, как сказали, что-то случиться.
В моём представлении, "несколько" означает 3-9, а про 2-4 я бы скорее сказал "в паре метров". В любом случае, это додумка редактора, в источнике говорят только про две комнаты.
SP500 за последний год почти на 30% вырос, а в среднем за 5 лет давал 13%. А низкорисковый фонд это, например, Fidelity, который даёт как раз около 5%, но ведёт себя гораздо более стабильно.
P.S. Цифры, правда, в чистых долларах, без учёта инфляции.
Для того, что вы описываете, в стандарте есть отдельное понятие - unspecified behaviour (да, тоже UB, но обычно когда пишут UB, подразумевают undefined behaviour). Наличие в коде unspecified behaviour означает потенциальные проблемы с переносимостью, но просто от обновления компилятора или изменения никак не связанного участка кода ничего не сломается.
А undefined behaviour это именно "программа, допускающая такое поведение, некорректна". Я слышал, что изначально при стандартизации комитет просто не захотел принимать никаких решений о том, какое поведение должно быть в этих ситуациях, а потом компиляторы научились делать крутые агрессивные оптимизации, исходя из того, что UB не может происходить, и в результате наличие в стандарте UB стало принципиальной позицией.
Так вам получается и shared_ptr не подходит, он тоже не проверяет сам, лежит ли в нём nullptr. Вообще, все стандартные контейнеры ориентированы не только на безопасность, но и на возможность извлечь максимальную производительность, причём в случае конфликта обычно отдавая предпочтение последнему.
А если вам не нужна производительность, то зачем вы пишете на плюсах?
Тоже пересмотрел этот момент, включения движков не было. Я говорю о T+41, там человек говорит, что провели пробное включение и похоже, что оно успешно, но точные данные будут после полёта.
Рапторы и не должны были для сведения с орбиты использоваться. Должно было быть короткое пробное включение, которое слегка повысило бы орбиту. Как я понял, в момент тестирования Старшип не был на связи, получилось или нет я не понял.
P.S. А может дело не в связи, а просто в последний момент отменили попытку, я не расслышал.
Предполагаю, что не доходы больше, а расходы меньше. а. Механизм геоблокировки у них мог или уже быть, или его было легко организовать б. О мелкой компании вряд ли будут писать в газетах, что, мол, они такие плохие, прогибаются под диктатуру. А если вдруг будут, то это может даже им в плюс сыграть, просто потому, что многие впервые о них услышат.
Нет, функция класса описывалась бы как std::class_name::size, как, например, здесь: https://en.cppreference.com/w/cpp/container/vector/size
std::size это именно свободная функция, которая, в том числе, умеет принимать обычные массивы.
А с точки зрения языка разницы нет. Компилятор может поместить переменную на стеке, а может сразу в регистре, а может вообще нигде не размещать, а полностью соптимизировать. Указать напрямую вы ему не можете, и от того, используются ли классы, это опять же не зависит.
Скорее в том, что это сделали один раз для всех, и программист, который хочет просто сделать фильтрацию изображения окном 3x3, может не вникать в микрооптимизации.
Я говорил именно о скорости исполнения (скорость и удобство написания кода само собой разумеются). Там небольшие матрицы на стеке размещаются. И все операции по возможности через simd инструкции оптимизируются. Использование классов и размещение объектов в куче это вообще ортогональные вещи.
В моей практике для таких задач применялись библиотеки типа Eigen, которые несмотря на использование классов и прочих преимуществ (современных) плюсов, скорее всего будут быстрее чем код, написанный "классическим подходом, без библиотек".
std::size тоже не класс, а функция.
Почему? У них как раз легко заменяются отдельные комплектующие (иногда даже с возможностью апгрейда) и доступны альтернативные ОС. Вроде бы ровно то, что вы спрашивали.
Fairphone, Librem 5, Pinephone. Всё нишевые продукты, интересные лишь кучке энтузиастов, но тем не менее живые. А массовому пользователю это не интересно.
Побуду занудой: там было unspecified behaviour, то есть определяемое платформой, а не стандартом. А конкретно обработка директивы
#pragma
. UB (undefined behaviour) за исключением очевидных частных случаев вродеint a = *(int*)NULL;
вот так вот просто детектировать при компиляции нельзя (было бы иначе - это поведение бы уже давно стандартизировали как ошибку компиляции).Добавлю свой опыт.
SSD от Samsung на 512Гб - 5 лет работы системным диском в домашнем ПК, до этого 7 или 8 лет стоял 64Гб от OCZ, заменён был исключительно потому что объёма и скорости перестало хватать. Год назад добавился 4Тб SSD от WD.
microSD карточка на 256Гб (кажется Kingston) - 3 года. Основному смартфону 1.5 года, несколько предыдущих тоже продолжают работать, только у большинства сильно деградировала батарейка.
Заменять SSD, SD или смартфон из-за отказа флеш-памяти не приходилось ни разу.
Это хорошее объяснение отсутствия существенного спада миграции, но не резкого роста. Если правда сейчас переезжает втрое больше людей, чем в прошлом году, должно было, как сказали, что-то случиться.
В моём представлении, "несколько" означает 3-9, а про 2-4 я бы скорее сказал "в паре метров". В любом случае, это додумка редактора, в источнике говорят только про две комнаты.
SP500 за последний год почти на 30% вырос, а в среднем за 5 лет давал 13%. А низкорисковый фонд это, например, Fidelity, который даёт как раз около 5%, но ведёт себя гораздо более стабильно.
P.S. Цифры, правда, в чистых долларах, без учёта инфляции.
Чисто из интереса, зачем вам нужен SFINAE, если вам доступны концепты? Есть какие-то сценарии, которые концептами не покрываются?
Для того, что вы описываете, в стандарте есть отдельное понятие - unspecified behaviour (да, тоже UB, но обычно когда пишут UB, подразумевают undefined behaviour). Наличие в коде unspecified behaviour означает потенциальные проблемы с переносимостью, но просто от обновления компилятора или изменения никак не связанного участка кода ничего не сломается.
А undefined behaviour это именно "программа, допускающая такое поведение, некорректна". Я слышал, что изначально при стандартизации комитет просто не захотел принимать никаких решений о том, какое поведение должно быть в этих ситуациях, а потом компиляторы научились делать крутые агрессивные оптимизации, исходя из того, что UB не может происходить, и в результате наличие в стандарте UB стало принципиальной позицией.
Так вам получается и shared_ptr не подходит, он тоже не проверяет сам, лежит ли в нём nullptr. Вообще, все стандартные контейнеры ориентированы не только на безопасность, но и на возможность извлечь максимальную производительность, причём в случае конфликта обычно отдавая предпочтение последнему.
А если вам не нужна производительность, то зачем вы пишете на плюсах?
Тоже пересмотрел этот момент, включения движков не было. Я говорю о T+41, там человек говорит, что провели пробное включение и похоже, что оно успешно, но точные данные будут после полёта.
Звучало «like eventual deorbit burns».
Рапторы и не должны были для сведения с орбиты использоваться. Должно было быть короткое пробное включение, которое слегка повысило бы орбиту. Как я понял, в момент тестирования Старшип не был на связи, получилось или нет я не понял.
P.S. А может дело не в связи, а просто в последний момент отменили попытку, я не расслышал.
Предполагаю, что не доходы больше, а расходы меньше.
а. Механизм геоблокировки у них мог или уже быть, или его было легко организовать
б. О мелкой компании вряд ли будут писать в газетах, что, мол, они такие плохие, прогибаются под диктатуру. А если вдруг будут, то это может даже им в плюс сыграть, просто потому, что многие впервые о них услышат.
Но PUBG не рекурсивный акроним, а обычный...