Cache array lengths and default to empty options object