Enlightenment CVS committal

Author  : onefang
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_desktop


Modified Files:
        Ecore_Desktop.h ecore_desktop.c ecore_desktop_icon.c 
        ecore_desktop_paths.c ecore_desktop_private.h 


Log Message:
Instrumentation so that we can test performance while of caching.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/Ecore_Desktop.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- Ecore_Desktop.h     22 Sep 2006 07:51:32 -0000      1.29
+++ Ecore_Desktop.h     22 Sep 2006 10:11:32 -0000      1.30
@@ -132,6 +132,23 @@
    Ecore_Desktop_Tree *parent; /* Parent if this is a child. */
 };
 
+struct _Ecore_Desktop_Instrumentation
+{
+   double desktops_time;
+   double desktops_in_cache_time;
+   double desktops_not_found_time;
+   double icons_time;
+   double icons_in_cache_time;
+   double icons_not_found_time;
+   int desktops;
+   int desktops_in_cache;
+   int desktops_not_found;
+   int icons;
+   int icons_in_cache;
+   int icons_not_found;
+};
+
+
 # ifdef __cplusplus
 extern              "C"
 {
@@ -245,6 +262,9 @@
    Ecore_Desktop_Tree *ecore_desktop_xmlame_get(char *file);
 
    char               *ecore_desktop_home_get(void);
+
+   EAPI void           ecore_desktop_instrumentation_reset(void);
+   EAPI void           ecore_desktop_instrumentation_print(void);
 
 # ifdef __cplusplus
 }
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- ecore_desktop.c     22 Sep 2006 06:07:58 -0000      1.36
+++ ecore_desktop.c     22 Sep 2006 10:11:32 -0000      1.37
@@ -8,13 +8,7 @@
 #include <ctype.h>
 #include <sys/stat.h>
 
-Ecore_List         *ecore_desktop_paths_config = NULL;
-Ecore_List         *ecore_desktop_paths_menus = NULL;
-Ecore_List         *ecore_desktop_paths_directories = NULL;
-Ecore_List         *ecore_desktop_paths_desktops = NULL;
-Ecore_List         *ecore_desktop_paths_icons = NULL;
-Ecore_List         *ecore_desktop_paths_kde_legacy = NULL;
-Ecore_List         *ecore_desktop_paths_xsessions = NULL;
+struct _Ecore_Desktop_Instrumentation instrumentation;
 
 extern int          reject_count, not_over_count;
 
@@ -188,19 +182,23 @@
    struct stat         st;
    char               *value;
    int                 stated = 0;
+   int                 in_cache = 0;
+   double              begin;
 
+   begin = ecore_time_get();
    result = (Ecore_Desktop *) ecore_hash_get(desktop_cache, (char *)file);
    /* Check if the cache is still valid. */
    if (result)
      {
+        in_cache = 1;
        if (stat(result->original_path, &st) >= 0)
          {
             if (st.st_mtime > result->mtime)
               {
                  ecore_hash_remove(desktop_cache, result->original_path);
                  result = NULL;
-                 stated = 1;
               }
+            stated = 1;
          }
      }
    if (!result)
@@ -215,10 +213,7 @@
             result->data = ecore_desktop_ini_get(result->original_path);
             /* Timestamp the cache, and no need to stat the file twice if the 
cache was stale. */
             if ((stated) || (stat(result->original_path, &st) >= 0))
-              {
-                 result->mtime = st.st_mtime;
-                 stated = 1;
-              }
+               result->mtime = st.st_mtime;
             if (result->data)
               {
                  result->group =
@@ -499,6 +494,25 @@
               }
          }
      }
+
+   if (result)
+     {
+        if (in_cache)
+          {
+             instrumentation.desktops_in_cache_time += ecore_time_get() - 
begin;
+             instrumentation.desktops_in_cache++;
+         }
+       else
+         {
+             instrumentation.desktops_time += ecore_time_get() - begin;
+             instrumentation.desktops++;
+         }
+     }
+   else
+     {
+        instrumentation.desktops_not_found_time += ecore_time_get() - begin;
+        instrumentation.desktops_not_found++;
+     }
    return result;
 }
 
@@ -971,4 +985,37 @@
       result = strdup(exec);
 
    return result;
+}
+
+EAPI void
+ecore_desktop_instrumentation_reset(void)
+{
+   instrumentation.desktops = 0;
+   instrumentation.desktops_in_cache = 0;
+   instrumentation.desktops_not_found = 0;
+   instrumentation.icons = 0;
+   instrumentation.icons_in_cache = 0;
+   instrumentation.icons_not_found = 0;
+   instrumentation.desktops_time = 0.0;
+   instrumentation.desktops_in_cache_time = 0.0;
+   instrumentation.desktops_not_found_time = 0.0;
+   instrumentation.icons_time = 0.0;
+   instrumentation.icons_in_cache_time = 0.0;
+   instrumentation.icons_not_found_time = 0.0;
+   printf("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n");
+   printf("Desktop instrumentation reset.\n");
+   printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
+}
+
+EAPI void
+ecore_desktop_instrumentation_print(void)
+{
+   printf("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n");
+   printf("    Found %5d desktops          %2.5f (%2.6f/desktop)\n", 
instrumentation.desktops, instrumentation.desktops_time, 
instrumentation.desktops_time / instrumentation.desktops);
+   printf("    Found %5d desktops in cache %2.5f (%2.6f/desktop)\n", 
instrumentation.desktops_in_cache, instrumentation.desktops_in_cache_time, 
instrumentation.desktops_in_cache_time / instrumentation.desktops_in_cache);
+   printf("Not found %5d desktops          %2.5f (%2.6f/desktop)\n", 
instrumentation.desktops_not_found, instrumentation.desktops_not_found_time, 
instrumentation.desktops_not_found_time / instrumentation.desktops_not_found);
+   printf("    Found %5d icons             %2.5f (%2.6f/icon)\n", 
instrumentation.icons, instrumentation.icons_time, instrumentation.icons_time / 
instrumentation.icons);
+   printf("    Found %5d icons    in cache %2.5f (%2.6f/icon)\n", 
instrumentation.icons_in_cache, instrumentation.icons_in_cache_time, 
instrumentation.icons_in_cache_time / instrumentation.icons_in_cache);
+   printf("Not found %5d icons             %2.5f (%2.6f/icon)\n", 
instrumentation.icons_not_found, instrumentation.icons_not_found_time, 
instrumentation.icons_not_found_time / instrumentation.icons_not_found);
+   printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
 }
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_icon.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- ecore_desktop_icon.c        22 Sep 2006 07:51:32 -0000      1.21
+++ ecore_desktop_icon.c        22 Sep 2006 10:11:32 -0000      1.22
@@ -19,7 +19,7 @@
 
 /* FIXME: We need a way for the client to disable searching for any of these 
that they don't support. */
 static const char  *ext[] =
-   { ".edj", ".png", ".svgz", ".svg", ".xpm", "", NULL };
+   { ".edj", ".png", ".svgz", ".svg", ".xpm", NULL };
 static int          init_count = 0;
 static Ecore_Hash  *icon_theme_cache;
 static int          loaded = 0;
@@ -53,7 +53,10 @@
 {
    const char         *dir = NULL, *icn;
    Ecore_List         *icons;
+   int                 in_cache = 0;
+   double              begin;
 
+   begin = ecore_time_get();
    if (icon == NULL)
       return NULL;
 
@@ -85,6 +88,24 @@
      }
    ecore_list_destroy(icons);
 
+   if (dir)
+     {
+        if (in_cache)
+          {
+             instrumentation.icons_in_cache_time += ecore_time_get() - begin;
+             instrumentation.icons_in_cache++;
+         }
+       else
+         {
+             instrumentation.icons_time += ecore_time_get() - begin;
+             instrumentation.icons++;
+         }
+     }
+   else
+     {
+        instrumentation.icons_not_found_time += ecore_time_get() - begin;
+        instrumentation.icons_not_found++;
+     }
    return dir;
 }
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_paths.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- ecore_desktop_paths.c       22 Sep 2006 06:07:58 -0000      1.25
+++ ecore_desktop_paths.c       22 Sep 2006 10:11:32 -0000      1.26
@@ -36,6 +36,15 @@
  * and correct those guesses.
  */
 
+Ecore_List         *ecore_desktop_paths_config = NULL;
+Ecore_List         *ecore_desktop_paths_menus = NULL;
+Ecore_List         *ecore_desktop_paths_directories = NULL;
+Ecore_List         *ecore_desktop_paths_desktops = NULL;
+Ecore_List         *ecore_desktop_paths_icons = NULL;
+Ecore_List         *ecore_desktop_paths_kde_legacy = NULL;
+Ecore_List         *ecore_desktop_paths_xsessions = NULL;
+
+
 static Ecore_List  *_ecore_desktop_paths_get(Ecore_Desktop_Paths_Type 
path_type,
                                             char *before, char *env_home,
                                             char *env, char *env_home_default,
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_private.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_desktop_private.h     22 Sep 2006 06:08:42 -0000      1.6
+++ ecore_desktop_private.h     22 Sep 2006 10:11:32 -0000      1.7
@@ -7,6 +7,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <limits.h>
+#include <Ecore.h>
 #include <Ecore_File.h>
 
 #define E_FN_DEL(_fn, _h) if (_h) { _fn(_h); _h = NULL; }
@@ -22,6 +23,8 @@
 extern Ecore_List  *ecore_desktop_paths_icons;
 extern Ecore_List  *ecore_desktop_paths_kde_legacy;
 extern Ecore_List  *ecore_desktop_paths_xsessions;
+extern struct _Ecore_Desktop_Instrumentation instrumentation;
+
 
 # ifdef __cplusplus
 extern              "C"



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to