Смотря что вы проверяете в массиве...
Если все файлы, то в цикле нет смысла использовать ещё один цикл с _ArraySearch, тогда FileExists
---
Если вы проверяете один путь, то я бы не использовал массив , а загнал бы все пути в нижнем регистре в MAP библиотеку, можно Scripting.Dictionary, можно в System.Collections.Hashtable
Создание займёт менее секунды, даже если путей около 100.000
Проверка пути в библиотеке занимает миллисекунды MapExists, заодно, если есть путь в библиотеке можно проверить и FileExists, так же его можно удалить или добавить другой
Так же можно сделать доп. проверки если идут и папки и файлы в библиотеке
; проверка 1-папка, 2-файл, 0-не существует
Func _Fold1File2No0($sFile)
Return FileExists($sFile)?(StringInStr(FileGetAttrib($sFile),'D')?1:2):0
EndFunc
; проверка , 1-файл, 0-не существует 0-папка
Func _File1Fold0No0($sFile)
Return FileExists($sFile)?(StringInStr(FileGetAttrib($sFile),'D')?0:1):0
EndFunc