Значит в PureBasic 5.5 какая-то функция Left интересная.
В общем, примерно вот такой код:
For i = 0 to 30000
s$ = s$ + str(i)
next
t = millisecs()
For i = 0 to 30000
sl$ = left(s$, i)
next
print millisecs() - t
Blitz3D: 44 мс
FreeBasic: 28 мс (Строки Си)
PureBasic:
3840 мс
Но если уменьшаем количество итераций в обоих циклах допустим до 300 (точно не помню до скольки), то результаты будут такие:
Blitz3D: 12 мс
FreeBasic: 9 мс
PureBasic:
2 мс
Может, конечно, ошибка какая-то, хз. Может в PB что-то заглючило от слишком длинной строки.
InStr тоже бывает двух типов:
- Зависит от длины строк (выигрывает на коротких строках) - Алгоритм Кнута — Морриса — Пратта
- Не зависит от длины - Алгоритм Ахо — Корасик
Может с Left такая же история?