diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 86fe7fa..442b570 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -697,10 +697,44 @@ query_resource_by_id (gint id)
 	return uri;
 }
 
+static gdouble total2, total3;
+
+static void
+l_timer_stop (GTimer *timer)
+{
+	g_timer_stop (timer);
+	g_print ("###   Checkpoint lookup time: %.03fs\n", g_timer_elapsed (timer, NULL));
+	total2 += g_timer_elapsed (timer, NULL);
+}
+
+static void
+w_timer_stop (GTimer *timer)
+{
+	g_timer_stop (timer);
+	g_print ("###   Checkpoint write statement time: %.03fs\n", g_timer_elapsed (timer, NULL));
+	total3 += g_timer_elapsed (timer, NULL);
+}
+
 static void
 replay_journal (void)
 {
 	GError *journal_error = NULL;
+	GTimer *timer1, *timer2, *timer3;
+
+	total2 = 0;
+	total3 = 0;
+
+	timer1 = g_timer_new ();
+	timer2 = g_timer_new ();
+	timer3 = g_timer_new ();
+
+	g_timer_start (timer1);
+
+	g_timer_start (timer2);
+	g_timer_stop (timer2);
+
+	g_timer_start (timer3);
+	g_timer_stop (timer3);
 
 	tracker_db_journal_reader_init (NULL);
 
@@ -717,6 +751,8 @@ replay_journal (void)
 			gint id;
 			const gchar *uri;
 
+			g_timer_continue (timer3);
+
 			tracker_db_journal_reader_get_resource (&id, &uri);
 
 			iface = tracker_db_manager_get_db_interface ();
@@ -729,6 +765,8 @@ replay_journal (void)
 			tracker_db_statement_bind_int (stmt, 0, id);
 			tracker_db_statement_bind_text (stmt, 1, uri);
 			tracker_db_statement_execute (stmt, &error);
+			w_timer_stop (timer3);
+			
 		} else if (type == TRACKER_DB_JOURNAL_START_TRANSACTION) {
 			tracker_data_begin_replay_transaction (tracker_db_journal_reader_get_time ());
 		} else if (type == TRACKER_DB_JOURNAL_END_TRANSACTION) {
@@ -737,56 +775,90 @@ replay_journal (void)
 			tracker_db_journal_reader_get_statement (&graph_id, &subject_id, &predicate_id, &object);
 
 			if (graph_id > 0) {
+				g_timer_continue (timer2);
 				graph = query_resource_by_id (graph_id);
+				l_timer_stop (timer2);
 			} else {
 				graph = NULL;
 			}
+			g_timer_continue (timer2);
 			subject = query_resource_by_id (subject_id);
 			predicate = query_resource_by_id (predicate_id);
+			l_timer_stop (timer2);
 
+			g_timer_continue (timer3);
 			tracker_data_insert_statement_with_string (graph, subject, predicate, object, &error);
+			w_timer_stop (timer3);
 		} else if (type == TRACKER_DB_JOURNAL_INSERT_STATEMENT_ID) {
 			tracker_db_journal_reader_get_statement_id (&graph_id, &subject_id, &predicate_id, &object_id);
 
 			if (graph_id > 0) {
+				g_timer_continue (timer2);
 				graph = query_resource_by_id (graph_id);
+				l_timer_stop (timer2);
 			} else {
 				graph = NULL;
 			}
+			g_timer_continue (timer2);
 			subject = query_resource_by_id (subject_id);
 			predicate = query_resource_by_id (predicate_id);
 			object = query_resource_by_id (object_id);
+			l_timer_stop (timer2);
 
+			g_timer_continue (timer3);
 			tracker_data_insert_statement_with_uri (graph, subject, predicate, object, &error);
+			w_timer_stop (timer3);
 		} else if (type == TRACKER_DB_JOURNAL_DELETE_STATEMENT) {
 			tracker_db_journal_reader_get_statement (&graph_id, &subject_id, &predicate_id, &object);
 
 			if (graph_id > 0) {
+				g_timer_continue (timer2);
 				graph = query_resource_by_id (graph_id);
+				l_timer_stop (timer2);
 			} else {
 				graph = NULL;
 			}
+
+			g_timer_continue (timer2);
 			subject = query_resource_by_id (subject_id);
 			predicate = query_resource_by_id (predicate_id);
+			l_timer_stop (timer2);
 
+			g_timer_continue (timer3);
 			tracker_data_delete_statement (graph, subject, predicate, object, &error);
+			w_timer_stop (timer3);
 		} else if (type == TRACKER_DB_JOURNAL_DELETE_STATEMENT_ID) {
 			tracker_db_journal_reader_get_statement_id (&graph_id, &subject_id, &predicate_id, &object_id);
 
 			if (graph_id > 0) {
+				g_timer_continue (timer2);
 				graph = query_resource_by_id (graph_id);
+				l_timer_stop (timer2);
 			} else {
 				graph = NULL;
 			}
+			g_timer_continue (timer2);
 			subject = query_resource_by_id (subject_id);
 			predicate = query_resource_by_id (predicate_id);
 			object = query_resource_by_id (object_id);
+			l_timer_stop (timer2);
 
+			g_timer_continue (timer3);
 			tracker_data_delete_statement (graph, subject, predicate, object, &error);
+			w_timer_stop (timer3);
 		}
 	}
 
 
+	g_timer_stop (timer1);
+
+	g_print ("### Total time: %.03fs\n", g_timer_elapsed (timer1, NULL));
+	g_print ("### Total lookups time: %.03fs\n", total2);
+	g_print ("### Total write statment time: %.03fs\n", total3);
+
+	g_timer_reset (timer1);
+	g_timer_start (timer1);
+
 	if (journal_error) {
 		gsize size;
 
@@ -801,6 +873,10 @@ replay_journal (void)
 	} else {
 		tracker_db_journal_reader_shutdown ();
 	}
+	g_timer_stop (timer1);
+
+	g_print ("### Truncate time: %.03fs", g_timer_elapsed (timer1, NULL));
+
 }
 
 static void

