LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

C++, конечно, быстрее, если ты захочешь перенести одну мапу в другую по перемещающему конструктору, потому что в некоторых основных реализациях этот конструктор не объявлен как noexcept. Умный компилятор C++, видя что нет гарантии того, что не может быть кинуто исключений, специально создаст копию мапы на тот случай, а вдруг во время перемещения будет все же кинуто исключение, а потом компилятор уже переместит копию исходной мапы на новое место. А по другому никак, потому что если бы исключение возникло во время перемещения, то старый объект мог бы остаться в невалидном состоянии, и тогда всей приложухе пришел бы серый песец. C++ же не может как Rust просто позволить себе не вызывать деструктор для старого перемещенного объекта, потому что низзя - так надо! Итого, при «перемещении» мапы создаем копию мапы, а потом уже перемещаем.

Конечно, C++ быстрее, чем Rust, хотя и работает программа дольше, потому что медленный Rust при перемещении мапы просто побитово скопирует вмиг всего лишь небольшой хендл, это несколько байтов, но зато Rust ох какой тормозной!

P.S. Просто наболело.

Исправление dave, :

C++, конечно, быстрее, если ты захочешь перенести одну мапу в другую по перемещающему конструктору, потому что в некоторых основных реализациях этот конструктор не объявлен как noexcept. Умный компилятор C++, видя что нет гарантии того, что не может быть кинуто исключений, специально создаст копию мапы на тот случай, а вдруг во время перемещения будет все же кинуто исключение, а потом компилятор уже переместит копию исходной мапы на новое место. А по другому никак, потому что если бы исключение возникло во время перемещения, то старый объект мог бы остаться в невалидном состоянии, и тогда всей приложухе пришел бы серый песец. C++ же не может как Rust просто позволить себе не вызывать деструктор для старого перемещенного объекта, потому что низзя - так надо! Итого, при «перемещении» мапы создаем копию мапы, а потом уже перемещаем.

Конечно, C++ быстрее, чем Rust, хотя и работает программа дальше, потому что медленный Rust при перемещении мапы просто побитово скопирует вмиг всего лишь небольшой хендл, это несколько байтов, но зато Rust ох какой тормозной!

P.S. Просто наболело.

Исходная версия dave, :

C++, конечно, быстрее, если ты захочешь перенести одну мапу в другую по перемещающему конструктору, потому что в некоторых основных реализациях этот конструктор не объявлен как noexcept. Умный компилятор C++, видя что нет гарантии того, что не может быть кинуто исключений, специально создаст копию мапы на тот случай, а вдруг во время перемещения будет все же кинуто исключение, а потом компилятор уже переместит копию исходной мапы на новое место. А по другому никак, потому что если бы исключение возникло во время перемещения, то старый объект мог бы остаться в невалидном состоянии, и тогда всей приложухе пришел бы серый песец. C++ же не может как Rust просто позволить себе не вызывать деструктор для старого перемещенного объекта, потому что низзя - так надо! Итого, при «перемещении» мапы создаем копию мапы, а потом уже перемещаем.

Конечно, C++ быстрее, чем Rust, хотят и работает программа дальше, потому что медленный Rust при перемещении мапы просто побитово скопирует вмиг всего лишь небольшой хендл, это несколько байтов, но зато Rust ох какой тормозной!

P.S. Просто наболело.