Vergiss das mitzählen.
Nimm eine
Stopwatch, die ist genau für solche Zeitmessungen da und ist dafür sehr exakt.
Erstmal eine komplett drumrum.
Dann am besten zwei Stopwatches:
Die eine ums komplette rum, die zweite stoppst Du in jedem Durchlauf, schreibst die elapsed time z.B. in eine List<TimeSpan>, resettest und startest sie neu.
Dann hast Du auch ne Info wie lange ein insert dauert.
Du kannst auch alternativ während die Stopwatch läuft ab und zu die elapsed time auslesen und z.B: auf die Debug- oder Trace-Klasse schreiben.
Dann siehst Du am ehesten bei welchen calls die meiste Zeit verloren geht.
Aber aufpassen: Wenn Du das im Debug-Build und im worst case noch mit attachtem debugger laufen lässt wird das dann *richtig* langsam.