I often need to break a loop in OCaml, there are at least two ways:
(* by exception *)
try
for i = 0 to 100 do
...
if cond then raise BreakLoop
d
Compared to other languages, exceptions are very fast in ocaml (as long as you use the original compilers. Things are different for js_of_ocaml, ocaml-java, etc.)
However, the solution with compilicated while-loops will still be a little bit faster. I wouldn't care about the mininmal speed differences, if the code is easier to read with exceptions - at least in most cases.