Прочитал интересный момент по инициализации массива, якобы при создании он заполняется нулями, следовательно тратит на это некоторое время.
Если использовать такой макрос, то можно избежать этой операции:
#define noinit:%0[%1]; goto _noinit_%0; new %0[%1]; _noinit_%0:
Эксперимент, код:
Результат:
Откуда берутся различные цифры после Noinit:? Это какие-то ссылки на ячейки памяти или что?
Еще интересен момент, есть ли смысл изменить макрос таким способом?
#define noinit:%0[%1]; goto _noinit_%0; new %0[%1]; _noinit_%0: %0[0] = 0;
В таком случае можно будет забыть о ручной инициализации, или я не так что-то понимаю?
Может быть если использовать %0[0] = 0;, то пока я получаю доступ к 0-ой ячейке массива, профит от noinit: пойдет на нет?