Нет стандартного способа сделать это, но некоторые компиляторы имеют аннотации, которые можно использовать для этого, например, в GCC вы можете использовать тег __attribute_pure__
в функции (альтернативно __attribute__((pure))
), чтобы сообщить что функция pure (т.е. не имеет побочных эффектов). Это широко используется в стандартной библиотеке C, так что, например:
char * str = get_some_string();
for ( int i = 0; i < strlen( str ); ++i ) {
str[i] = toupper(str[i]);
}
Может быть оптимизирован компилятором в:
char * str = get_some_string();
int __length = strlen( str );
for ( int i = 0; i < __length; ++ i ) {
str[i] = toupper(str[i]);
}
Функция объявлена в строке .h header as:
extern size_t strlen (__const char *__s)
__THROW __attribute_pure__ __nonnull ((1));
Где __THROW
- исключение без исключения в случае, если он является компилятором C ++, анализирующим функцию, а __nonnull((1))
сообщает компилятору, что первый аргумент не должен быть null (т. е. вызвать предупреждение, если аргумент имеет значение null и используется флаг Wnonnull).
Диспетчер ресурсов отражает статус Приложения относительно YARN, отвечая на следующий вопрос:
Did the application complete properly? Did all the mapper and reducer tasks complete?
В то время как FinalStatus AM может отражать, достигла ли цель приложения ответ на следующий вопрос:
Did it produce the right output? Was it able to write output to HDFS?