let iter_matrix f a =
  for i = 0 to Array.length a - 1 do
    let row = a.(i) in
    for j = 0 to Array.length row - 1 do
      f i j row.(j)
    done
  done

(* Il est plus efficace de procéder par ligne, car on accède alors
   une seule fois à la ligne i (let row = a.(i)).

   Par ailleurs, la localité de données est bien meilleure car chaque ligne
   de la matrice est une zone contigüe de mémoire, qui est déplacée dans le
   cache, parcourue, puis n'est plus utilisée. *)

(* note : on peut aussi utiliser Array.iteri pour parcourir les éléments
   de chaque ligne, ainsi : *)

let iter_matrix f a =
  for i = 0 to Array.length a - 1 do
    Array.iteri (f i) a.(i)
  done


This document was generated using caml2html