Теоретично for буде трохи швидшим, оскільки має чітко визначену кількість повторень і не потребує перевірки умови виходу. В асемблерному коді це буде просто повторення деякої ділянки коду n разів... А у випадку з while буде ще перевірка умови (типу кількість повторень < 1000000). Але я не думаю, що різниця в швидкодії навіть буде помітною
std::vector<InterDat>::const_iterator it, end;it = sections_.begin();end = sections_.end();for(; it != end; ++it){..........
Ой, чур мене, STL:)
Хоча тоді абсолютно не зрозуміла доцільність таких конструкцій в for, теж саме можна і while'ом зробити.
//for(i=0;i<BreaksNumber;i++){ i=0;while (i++<BreaksNumber){ n[0]=i*d; n[1]=i*h; a=a0+n[0]+n[1]; b=a+d; if (xz > a && xz < b){ xz1=xz0*z1*x_z0; yz1=yz0*z1*y_z0; fprintf(outfile,"%lf %lf\n",xz1,yz1); }}
навіщо "чур"? хоч деякі ідеї в сучасному с++ досить складні, але для професійного програмування іх бажано знати Усмішка а то так і залишишся на 15 років в минулому.
for: real 1m18.192s (+- 0.1s*)user 1m17.421s (+- 0.1s)sys 0m0.521s (+- 0.01s) while: real 1m17.724s (+- 0.1s)user 1m16.974s (+- 0.1s)sys 0m0.513s (+-0.01s)
...while виявляється випереджає for. Хоча і на якісь 0.3 сек., і це на мільярд ітерацій.Отже приблизно на 10e-10 сек. на ітерацію. Круто.
...if (xz < a(0)+i*d+i*h && xz > a(0)+(i+1)*d+i*h){...