I suggest you an other solution which is fully KIXTART.
 Code:
$filename = "xxxxxxxx.txt"

dim $start, $start1
$start = @ticks
$dir = ReadFileToArray( $filename )
$start = @ticks - $start

if not @error
	$start1 = @ticks
	for each $line in $dir
		$line ?
	next
	$start1 = @ticks - $start1
endif

"file read in      " $start " ms" ?
"file displayed in " $start1 " ms" ?


function ReadFileToArray( $filename )
	dim $handle, $nbmax

	$nbmax = 4095
	redim $ReadFileToArray[$nbmax]

	$handle=freefilehandle()
	if Open($handle, $filename)<>0	exit 2	endif

	dim $line, $i
	$i = -1
	$line = Readline($handle)
	while not @error
		$i = $i + 1
		if $i > $nbmax
			$nbmax = $nbmax*2+1
			redim preserve $ReadFileToArray[$nbmax]
		endif
		$ReadFileToArray[$i] = $line

		$line = Readline($handle)
	loop
	$=Close($handle)

	if $i>-1
		redim preserve $ReadFileToArray[$i]
		exit 0
	else
		exit 1
	endif
endfunction
I used a file of 233KB with 4488 lines and the script took 31 ms to run (faster than string concatenation and than wshpipe) !!!
With a 11200 lines file (1861KB), the script runs in 110 ms.
My computer has an Intel Core I5 4200M (3000 Mhz) with 4 GB ram

in fact, using string concatenation is a bad idea because this is basically a slow operation. And may be there is a limitation on string size.
Using directly an array is faster even if the function has to resize the array several times ( with nbmax=0, the script run in 109 ms).
_________________________
Christophe