если не ошибаюсь, размер массива РНР хранится в структуре zval, а не вычисляется каждый раз.
точно так же, как и длина строки, что,кстати, делает вызов strlen() в РНР намного "дешевле" такого же в Ц.
поэтому в данном случае экономия происходит лишь за счёт отказа от вызова функции: занесения параметров в стэк и выполнения перехода на другую область кода.
возможно ещё, что помимо этого происходят какие-то внутренние фишки-подвижки в зенд-движке, но они тоже по идее не должны занимать много времени.