Нужна помошь по ускорению работы функции:
Код:

Func __UTF8ToUnicode($Utf8String)
Local $BufferSize = StringLen($Utf8String) * 2
Local $Buffer = DllStructCreate("byte[" & $BufferSize & "]")
DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
"int", 65001, _
"int", 0, _
"str", $Utf8String, _
"int", StringLen($Utf8String), _
"ptr", DllStructGetPtr($Buffer), _
"int", $BufferSize)
Local $UnicodeBinary = DllStructGetData($Buffer, 1)
Local $UnicodeHex1 = StringReplace($UnicodeBinary, "0x", "")
Local $StrLen = StringLen($UnicodeHex1)
Local $UnicodeString, $UnicodeHex2, $UnicodeHex3
For $i = 1 To $StrLen Step 4
$UnicodeHex2 = StringMid($UnicodeHex1, $i, 4)
If $UnicodeHex2 = "0000" Then ContinueLoop
$UnicodeHex3 = StringRegExpReplace($UnicodeHex2, "(..).(.)", "\2\1")
$UnicodeString &= ChrW(Dec($UnicodeHex3))
Next
$Buffer = 0
Return $UnicodeString
EndFunc
С большими блоками текста довольно медленно отрабатывает, всё дело в цикле, я уже пробовал разные комбинации вместо String*, но ничего значительно не ускорялось.. Или быть можеть есть другой вариант преобразовать UTF-8 в юникод? (UTF-16?)
Самое странное это то, что с одним и тем же текстом с файла, обрабатывает быстро, но текст с которым я работаю, получается с сети (вот кстати
ссылка для желающих потестить, можно использовать _InetGetSource(), хотя я использую TCP функции, но результат тот же). Т.е сохранив текст в файл, и проверив с него (используя отдельный скрипт), функция быстрее (намного) обрабатывает чем саму переменную)...