c++ - Slow iterating over string using pointers -


i love see why 1 of following solution slower other. lets concider following code:

// create long string int x,y; bool b; char c[10000];  (x=0;x<10000;x++)     c[x]='a'; string s(c); 

now want iterate on string , compare each character other. first solution completes task in 5 seconds:

for (y=0;y<100000;y++){ (x=0;x<10000;x++){     b = (s[x]=='a'); }} 

and second in 21 seconds:

string::iterator begin = s.begin(); string::iterator end   = s.end(); string::iterator i;  (y=0;y<100000;y++){     (i=begin;i<end;i++){         b = (*i=='a'); }} 

why second slower?

it having dereference pointer every time comparing iterator 'a', instead of comparing actual char value. negligible difference in cases, doing 1,000,000,000 iterations noticeable.


Popular posts from this blog

How to calculate SNR of signals in MATLAB? -

c# - Attempting to upload to FTP: System.Net.WebException: System error -

ios - UISlider customization: how to properly add shadow to custom knob image -