История изменений
Исправление monk, (текущая версия) :
если там llvm, она мощно все соптимизирует и будет по сути работать с сырым указателем, взяв его только раз где надо.
Не может. Дескриптор выглядит так
struct
{
bool valid;
T* p;
}
И вместо
*p = 1
получается
if(p.valid) { *p.p = 1; } else terminate();
Выкинуть проверку на valid llvm не может. Разве что в одном блоке несколько обращений подряд по одному дескриптору. И с массивом аналогично. Если в С++ использовать at, программа работает заметно медленнее.
Исходная версия monk, :
если там llvm, она мощно все соптимизирует и будет по сути работать с сырым указателем, взяв его только раз где надо.
Не может. Дескриптор выглядит так
struct
{
bool valid;
T* p;
}
И вместо
*p = 1
получается
if(p.valid) { *p.p = 1; }
Выкинуть проверку на valid llvm не может. Разве что в одном блоке несколько обращений подряд по одному дескриптору. И с массивом аналогично. Если в С++ использовать at, программа работает заметно медленнее.