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? -

java - How to create Table using Apache PDFBox -

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