evas/cserve2: Add entries loading saved time.
authorRafael Antognolli <antognolli@gmail.com>
Mon, 25 Jun 2012 20:06:44 +0000 (20:06 +0000)
committerRafael Antognolli <antognolli@gmail.com>
Mon, 25 Jun 2012 20:06:44 +0000 (20:06 +0000)
Still must add glyphs loading saved time.

SVN revision: 72828

legacy/evas/src/bin/evas_cserve2_cache.c
legacy/evas/src/bin/evas_cserve2_usage.c
legacy/evas/src/lib/cserve2/evas_cs2.h

index bdc20a3..f791d59 100644 (file)
@@ -56,6 +56,8 @@ struct _Entry {
 #ifdef DEBUG_LOAD_TIME
    struct timeval load_start;
    struct timeval load_finish;
+   int load_time;
+   int saved_time;
 #endif
 };
 
@@ -209,6 +211,24 @@ static int unused_mem_usage = 0;
 static int max_font_usage = 10 * 4 * 1024; /* in kbytes */
 static int font_mem_usage = 0;
 
+#ifdef DEBUG_LOAD_TIME
+static int
+_timeval_sub(const struct timeval *tv2, const struct timeval *tv1)
+{
+    int t1, t2;
+
+    t1 = tv1->tv_usec + tv1->tv_sec * 1000000;
+    t2 = tv2->tv_usec + tv2->tv_sec * 1000000;
+
+    // Make sure that we don't add negative values. Some images may have
+    // been not loaded yet, so it would mess with the stats.
+    if (t2 > t1)
+      return t2 - t1;
+
+    return 0;
+}
+#endif
+
 static inline void
 _entry_load_start(Entry *e)
 {
@@ -222,26 +242,17 @@ _entry_load_finish(Entry *e)
 {
 #ifdef DEBUG_LOAD_TIME
    gettimeofday(&e->load_finish, NULL);
+   e->load_time = _timeval_sub(&e->load_finish, &e->load_start);
 #endif
 }
 
-#ifdef DEBUG_LOAD_TIME
-static int
-_timeval_sub(const struct timeval *tv2, const struct timeval *tv1)
+static inline void
+_entry_load_reused(Entry *e)
 {
-    int t1, t2;
-
-    t1 = tv1->tv_usec + tv1->tv_sec * 1000000;
-    t2 = tv2->tv_usec + tv2->tv_sec * 1000000;
-
-    // Make sure that we don't add negative values. Some images may have
-    // been not loaded yet, so it would mess with the stats.
-    if (t2 > t1)
-      return t2 - t1;
-
-    return 0;
-}
+#ifdef DEBUG_LOAD_TIME
+   e->saved_time += e->load_time;
 #endif
+}
 
 static void
 _image_opened_send(Client *client, File_Data *entry, unsigned int rid)
@@ -496,7 +507,7 @@ _load_request_response(Image_Data *e, Slave_Msg_Image_Loaded *resp)
 {
    Waiter *w;
 
-   _entry_load_start(&e->base);
+   _entry_load_finish(&e->base);
 
    e->alpha_sparse = resp->alpha_sparse;
    if (!e->doload)
@@ -1755,7 +1766,6 @@ _font_entry_stats_cb(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED_
    Font_Entry *fe = data;
    Msg_Stats *msg = fdata;
    Font_Cache *fc;
-   int load_time;
    int nrefs = eina_list_count(fe->base.references);
 
    msg->fonts.fonts_loaded++;
@@ -1781,9 +1791,12 @@ _font_entry_stats_cb(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED_
 
 #ifdef DEBUG_LOAD_TIME
    // accounting fonts load time
-   load_time = _timeval_sub(&fe->base.load_finish, &fe->base.load_start);
-   msg->fonts.fonts_load_time += load_time;
-   if (fe->caches) msg->fonts.fonts_used_load_time += load_time;
+   msg->fonts.fonts_load_time += fe->base.load_time;
+   if (fe->caches)
+     {
+        msg->fonts.fonts_used_load_time += fe->base.load_time;
+        msg->fonts.fonts_used_saved_time += fe->base.saved_time;
+     }
 
    // accounting glyphs load time
    msg->fonts.glyphs_load_time += fe->gl_load_time;
@@ -1808,10 +1821,9 @@ _image_file_entry_stats_cb(const Eina_Hash *hash __UNUSED__, const void *key __U
          (sizeof(Request) + sizeof(Eina_List *));
 
 #ifdef DEBUG_LOAD_TIME
-   int load_time;
    // accounting file entries load time
-   load_time = _timeval_sub(&fd->base.load_finish, &fd->base.load_start);
-   msg->images.files_load_time += load_time;
+   msg->images.files_load_time += fd->base.load_time;
+   msg->images.files_saved_time += fd->base.saved_time;
 #endif
 
    return EINA_TRUE;
@@ -1837,11 +1849,9 @@ _image_data_entry_stats_cb(const Eina_Hash *hash __UNUSED__, const void *key __U
       (image_size * eina_list_count(id->base.references));
 
 #ifdef DEBUG_LOAD_TIME
-   int load_time;
    // accounting image entries load time
-   load_time = _timeval_sub(&id->base.load_finish, &id->base.load_start);
-   if (load_time > 0)
-     msg->images.images_load_time += load_time;
+   msg->images.images_load_time += id->base.load_time;
+   msg->images.images_saved_time += id->base.saved_time;
 #endif
 
    return EINA_TRUE;
@@ -2086,6 +2096,7 @@ cserve2_cache_file_open(Client *client, unsigned int client_file_id, const char
    if (ref)
      {
         entry = (File_Data *)ref->entry;
+        _entry_load_reused(ref->entry);
 
         if (entry->invalid)
           {
@@ -2120,6 +2131,7 @@ cserve2_cache_file_open(Client *client, unsigned int client_file_id, const char
              return -1;
           }
         ref = _entry_reference_add((Entry *)entry, client, client_file_id);
+        _entry_load_reused(ref->entry);
         eina_hash_add(client->files.referencing, &client_file_id, ref);
         if (entry->base.request)
           _request_answer_add(entry->base.request, ref, rid, CSERVE2_OPEN);
@@ -2218,6 +2230,7 @@ cserve2_cache_image_opts_set(Client *client, Msg_Setopts *msg)
              image_entries_lru = eina_list_remove(image_entries_lru, entry);
              unused_mem_usage -= _image_entry_size_get(entry);
           }
+        _entry_load_reused(&entry->base);
 
         if (oldref && (oldref->entry->id == image_id))
           return 0;
@@ -2387,6 +2400,7 @@ cserve2_cache_font_load(Client *client, const char *source, unsigned int sourcel
         client->fonts.referencing = eina_list_append(
            client->fonts.referencing, ref);
 
+        _entry_load_reused(&fe->base);
         fe->unused = EINA_FALSE;
 
         if (fe->request)
index 3e0003d..9691824 100644 (file)
@@ -203,8 +203,9 @@ _usage_msg_read(void)
    printf("Image data usage: %d kbytes\n", msg->images.images_size / 1024);
    printf("Image data unused: %d kbytes\n", msg->images.unused_size / 1024);
    printf("Image headers load time: %dus\n", msg->images.files_load_time);
+   printf("Image headers saved time: %dus\n", msg->images.files_saved_time);
    printf("Image data load time: %dus\n", msg->images.images_load_time);
-   printf("Glyphs load time: %dus\n", msg->fonts.glyphs_load_time);
+   printf("Image data saved time: %dus\n", msg->images.images_saved_time);
    printf("\nFont Usage Statistics:\n");
    printf("----------------------\n\n");
    printf("Requested usage: %d bytes\n", msg->fonts.requested_size);
@@ -212,6 +213,7 @@ _usage_msg_read(void)
    printf("Unused size: %d bytes\n", msg->fonts.unused_size);
    printf("Fonts load time: %dus\n", msg->fonts.fonts_load_time);
    printf("Fonts used load time: %dus\n", msg->fonts.fonts_used_load_time);
+   printf("Fonts used saved time: %dus\n", msg->fonts.fonts_used_saved_time);
    printf("Glyphs load time: %dus\n", msg->fonts.glyphs_load_time);
 
    printf("\n");
index 1ae9a0f..77c4e44 100644 (file)
@@ -209,6 +209,7 @@ struct _Msg_Stats {
       int fonts_used_load_time; /* total time spent loading fonts that are
                                  * really used, i.e. fonts that have glyphs
                                  * rendered */
+      int fonts_used_saved_time;
       int glyphs_load_time; /* total time spent loading glyphs */
    } fonts;
    struct {
@@ -223,7 +224,9 @@ struct _Msg_Stats {
       unsigned int unused_size; /* memory usage from image data */
 
       int files_load_time;
+      int files_saved_time;
       int images_load_time;
+      int images_saved_time;
    } images;
 };