LINUX.ORG.RU

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

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

Кстати да, это нововведение может заметно просадить производительность и сейчас в некоторых местах. А именно:

void f(void) {
  char arr[1000000];
  sprintf(arr, "a");
}
По стандарту тут походу перед вызовом sprintf должно идти бесполезное зануление целого мегабайта стека. Ладно, про sprintf компилятор может догадаться что ему это не нужно, но может быть какая-то другая похожая функция. Если при этом оно ещё и много раз в цикле вызывает, всё совсем печально будет.

update: а, я не дочитал ссылку, запутался ещё и комментами вокруг. Возможно там и не собираются требовать зануление везде.

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

Кстати да, это нововведение может заметно просадить производительность и сейчас в некоторых местах. А именно:

void f(void) {
  char arr[1000000];
  sprintf(arr, "a");
}
По стандарту тут походу перед вызовом sprintf должно идти бесполезное зануление целого мегабайта стека. Ладно, про sprintf компилятор может догадаться что ему это не нужно, но может быть какая-то другая похожая функция. Если при этом оно ещё и много раз в цикле вызывает, всё совсем печально будет.

update: а, я не дочитал ссылку, запутался ещё и комментами вокруг. ВОзможно там и не собираются требовать зануление везде.

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

Кстати да, это нововведение может заметно просадить производительность и сейчас в некоторых местах. А именно:

void f(void) {
  char arr[1000000];
  sprintf(arr, "a");
}
По стандарту тут походу перед вызовом sprintf должно идти бесполезное зануление целого мегабайта стека. Ладно, про sprintf компилятор может догадаться что ему это не нужно, но может быть какая-то другая похожая функция. Если при этом оно ещё и много раз в цикле вызывает, всё совсем печально будет.