From ca88a72e9a2c6448cd949976660f814c77586f78 Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Mon, 12 Jul 2021 19:15:52 +0200
Subject: [PATCH] Measure elapsed times

---
 Inst_eddies/inst_eddies_in.py | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/Inst_eddies/inst_eddies_in.py b/Inst_eddies/inst_eddies_in.py
index 182ea0f5..6f24bd89 100755
--- a/Inst_eddies/inst_eddies_in.py
+++ b/Inst_eddies/inst_eddies_in.py
@@ -14,6 +14,8 @@ import shapefile
 import sys
 from dateutil import parser
 import netCDF4
+import time
+import csv
 
 argparser = argparse.ArgumentParser()
 argparser.add_argument("first_file",
@@ -58,11 +60,17 @@ else:
 for orient in ["cyclo", "anti"]:
     if os.access(f"SHPC_{orient}_all_dates", os.F_OK):
         shutil.rmtree(f"SHPC_{orient}_all_dates")
+
+perf_report = open("perf_report.csv", "w", newline='')
+writer = csv.writer(perf_report, lineterminator = "\n")
+writer.writerow(["date", "elapsed NCO", "elapsed Fortran", "elapsed cat"])
         
 while True:
     print("inst_eddies.py: Date:", my_date)
     
     if os.access(nc_file, os.F_OK):
+        my_pc = time.perf_counter()
+        
         if args.bbox:
             xmin, xmax, ymin, ymax = args.bbox
             nco_instance.ncks(nc_file, output = "cropped.nc",
@@ -77,15 +85,21 @@ while True:
         os.symlink(nc_file, "uv.nc")
         os.mkdir("SHPC_cyclo")
         os.mkdir("SHPC_anti")
+        elapsed_NCO = time.perf_counter() - my_pc
         
         with open("main_nml.txt") as nml_file:
+            my_pc = time.perf_counter()
             subprocess.run(inst_eddies_exe, stdin = nml_file, check = True)
+            elapsed_Fortran = time.perf_counter() - my_pc
 
         os.remove("h.nc")
         os.remove("uv.nc")
     else:
         print("inst_eddies.py: Missing file:", nc_file)
+        elapsed_NCO, elapsed_Fortran = - 1, - 1
 
+    my_pc = time.perf_counter()
+    
     for orient in ["cyclo", "anti"]:
         if os.access(f"SHPC_{orient}_all_dates", os.F_OK):
             if os.access(f"SHPC_{orient}", os.F_OK):
@@ -109,10 +123,13 @@ while True:
             if os.access(f"SHPC_{orient}", os.F_OK):
                 os.rename(f"SHPC_{orient}", f"SHPC_{orient}_all_dates")
 
+    elapsed_cat = time.perf_counter() - my_pc
+    writer.writerow([my_date, elapsed_NCO, elapsed_Fortran, elapsed_cat])
     my_date += datetime.timedelta(1)
     if my_date > last_date: break
     basename = my_date.strftime(args.template)
     nc_file = path.join(dirname, basename)
 
+perf_report.close()
 os.remove("unpacked.nc")
 if args.bbox: os.remove("cropped.nc")
-- 
GitLab