Эксперементировал со строками как с массивами и решил выяснить. А что быстрее: строковые функции MQL5 или операции с массивами. Результат меня удивил...
Вот код теста:
void OnStart() { //--- int N1=0; int N2=0; string str="+1-3*45/-678.9:10123456789qwertyuiop[]asdfghjkl;'zxcvbnm,.10123456789QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM/+1-3*45/-678.9:10123456789qwertyuiop[]asdfghjkl;'zxcvbnm,./10123456789qwertyuiop[]asdfghjkl;'zxcvbnm"; string str1="+1-7*45/-678.9/10123456789qwertyuiop[]asdfghjkl;'zxcvbnm,.10123456789QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM/+1-3*45/-678.9:10123456789qwertyuiop[]asdfghjkl;'zxcvbnm,./10123456789qwertyuiop[]asdfghjkl;'zxcvbnm"; string str2="+1-3)41/-678.9:10123456789QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,.10123456789QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM/+1-3*45/-678.9:10123456789qwertyuiop[]asdfghjkl;'zxcvbnm,./10123456789qwertyuiop[]asdfghjkl;'zxcvbnm"; int l=StringLen(str); Print(l); uint GTC=GetTickCount(); for(int i=0;i<100000;i++) { for(int j=0;j<l;j++) { if(str1[j]==str[j]) N1++; if(str2[j]==str[j]) N1++; } for(int k=0;k<l;k++) { for(int t=0;t<l;t++) { if(str1[k]==str2[t]) N2++; } } } Print("Время тестирования (массив)=",GetTickCount()-GTC," N1=",N1," N2=",N2); N1=0; N2=0; GTC=GetTickCount(); for(int i=0;i<100000;i++) { for(int j=0;j<l;j++) { if(StringGetCharacter(str1,j)==StringGetCharacter(str,j)) N1++; if(StringGetCharacter(str2,j)==StringGetCharacter(str,j)) N1++; } for(int k=0;k<l;k++) { for(int t=0;t<l;t++) { if(StringGetCharacter(str1,k)==StringGetCharacter(str2,t)) N2++; } } } Print("Время тестирования (строки)=",GetTickCount()-GTC," N1=",N1," N2=",N2); }
Sergey Pavlov:
Строки - это НЕ массивы. Разработчики добавили толькоЭксперементировал со строками как с массивами и решил выяснить. А что быстрее: строковые функции MQL5 или операции с массивами. Результат меня удивил...
Вот код теста:
ushort operator []( const uint Pos ) { return(::StringGetCharacter(this, Pos)); }Инлайниться должно полностью, поэтому оба варианта идентичны. И поэтому Вы можете брать индекс ни только отрицательный, но и не целочисленный.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь