Да, но я еще имел в виду не перелопачивать массив в 2D, а изменить алгоритм для использования строк вида "SubItem1|SubItem2|...". Самая мега быстрая функция в AutoIt - StringSplit(), вот под нее и нужно подстраиваться. А еще, madmasles, в вашем примере самое узкое место - _GUICtrlListView_GetItemText(), т.к. при каждом ее вызове создается и удаляется структура "wchar[...]", это самая медленная операция здесь. Если создать структуру один раз перед циклом и перейти на DllCall() - SendMessage(), то можно увеличить скорость в 2-3 раза.
А вообще, зачем нужен 2D массив? Пусть будет 1D массив вида:
[0] - "SubItem1|SubItem2|..."
[1] - "SubItem1|SubItem2|..."
...
[n] - "SubItem1|SubItem2|..."
При необходимости всегда можно извлечь значения "SubItem", это не в пример будет быстрее, чем сразу создавать 2D массив.