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

Php - Delimiter must not be alphanumeric or backslash -

trac - Modifying workflow to add a status and split on ticket type -

Delphi interface implements -