From 6c6c9cce331c4479243bdec2890daf126135d458 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Wed, 14 Jan 2026 22:33:52 +0100 Subject: [PATCH 1/7] add trace --- src/gxs/rsdataservice.cc | 19 ++++++++++++++++++- src/gxs/rsgenexchange.cc | 12 ++++++++++++ src/gxs/rsgxsnetservice.cc | 9 +++++++++ src/util/retrodb.cc | 13 ++++++++++++- 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/gxs/rsdataservice.cc b/src/gxs/rsdataservice.cc index 61900e171..0126de38f 100644 --- a/src/gxs/rsdataservice.cc +++ b/src/gxs/rsdataservice.cc @@ -1174,11 +1174,17 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, int resultCount = 0; #endif + // [TRACE] Start the database retrieval timer + RsDbg() << "DEBUG [DataService]: START retrieveNxsMsgs for " << reqIds.size() << " groups." << std::endl; + auto start_all = std::chrono::steady_clock::now(); + for(auto mit = reqIds.begin(); mit != reqIds.end(); ++mit) { - const RsGxsGroupId& grpId = mit->first; + // [TRACE] Start timer for this specific group + auto start_group = std::chrono::steady_clock::now(); + // if vector empty then request all messages const std::set& msgIdV = mit->second; std::vector msgSet; @@ -1222,6 +1228,12 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, msg[grpId] = msgSet; + // [TRACE] Log time per group to monitor progress + auto end_group = std::chrono::steady_clock::now(); + auto group_ms = std::chrono::duration_cast(end_group - start_group).count(); + RsDbg() << "DEBUG [DataService]: Group " << grpId.toStdString() + << " (Total " << msgSet.size() << " msgs) processed in " << group_ms << "ms." << std::endl; + msgSet.clear(); } @@ -1229,6 +1241,11 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, std::cerr << "RsDataService::retrieveNxsMsgs() " << mDbName << ", Requests: " << reqIds.size() << ", Results: " << resultCount << ", Time: " << timer.duration() << std::endl; #endif + // [TRACE] Log total database time + auto end_all = std::chrono::steady_clock::now(); + auto total_ms = std::chrono::duration_cast(end_all - start_all).count(); + RsDbg() << "DEBUG [DataService]: END retrieveNxsMsgs total time: " << total_ms << "ms." << std::endl; + return 1; } diff --git a/src/gxs/rsgenexchange.cc b/src/gxs/rsgenexchange.cc index adece60aa..be1a8fe97 100644 --- a/src/gxs/rsgenexchange.cc +++ b/src/gxs/rsgenexchange.cc @@ -1537,12 +1537,15 @@ bool RsGenExchange::getGroupData(const uint32_t &token, std::vectorgetMsgData(token, msgResult); if(ok) { + uint32_t count = 0; NxsMsgDataResult::iterator mit = msgResult.begin(); for(; mit != msgResult.end(); ++mit) { @@ -1565,6 +1568,7 @@ bool RsGenExchange::getMsgData(uint32_t token, GxsMsgDataMap &msgItems) { mItem->meta = *((*vit)->metaData); // get meta info from nxs msg gxsMsgItems.push_back(mItem); + count++; } else { @@ -1581,7 +1585,15 @@ bool RsGenExchange::getMsgData(uint32_t token, GxsMsgDataMap &msgItems) delete msg; } } + // [TRACE] Log the number of items processed + RsDbg() << "DEBUG [GenExch]: Deserialized " << count << " items." << std::endl; } + + // [TRACE] End timer and log total processing time + auto end_time = std::chrono::steady_clock::now(); + auto elapsed = std::chrono::duration_cast(end_time - start_time).count(); + RsDbg() << "DEBUG [GenExch]: getMsgData (Token: " << token << ") total time: " << elapsed << "ms." << std::endl; + return ok; } diff --git a/src/gxs/rsgxsnetservice.cc b/src/gxs/rsgxsnetservice.cc index 9f74520b3..bd0451419 100644 --- a/src/gxs/rsgxsnetservice.cc +++ b/src/gxs/rsgxsnetservice.cc @@ -3515,6 +3515,9 @@ void RsGxsNetService::runVetting() void RsGxsNetService::locked_genSendMsgsTransaction(NxsTransaction* tr) { + // [TRACE] Start global timer for the network transaction + auto start_net = std::chrono::steady_clock::now(); + #ifdef NXS_NET_DEBUG_0 GXSNETDEBUG_P_(tr->mTransaction->PeerId()) << "locked_genSendMsgsTransaction() Generating Msg data send fron TransN: " << tr->mTransaction->transactionNumber << std::endl; #endif @@ -3702,8 +3705,14 @@ void RsGxsNetService::locked_genSendMsgsTransaction(NxsTransaction* tr) delete newTr; } + // [TRACE] End global timer and log with the exact same format as V3 + auto end_net = std::chrono::steady_clock::now(); + auto net_ms = std::chrono::duration_cast(end_net - start_net).count(); + RsDbg() << "DEBUG [NetService]: TOTAL locked_genSendMsgsTransaction for " << tr->mItems.size() << " items took " << net_ms << "ms." << std::endl; + return; } + uint32_t RsGxsNetService::locked_getTransactionId() { return ++mTransactionN; diff --git a/src/util/retrodb.cc b/src/util/retrodb.cc index cff63fa9f..70b1c772e 100644 --- a/src/util/retrodb.cc +++ b/src/util/retrodb.cc @@ -241,6 +241,9 @@ bool RetroDb::execSQL(const std::string &query){ RetroCursor* RetroDb::sqlQuery(const std::string& tableName, const std::list& columns, const std::string& selection, const std::string& orderBy){ + // [TRACE] Start individual query timer + auto start_sql = std::chrono::steady_clock::now(); + if(tableName.empty() || columns.empty()){ std::cerr << "RetroDb::sqlQuery(): No table or columns given" << std::endl; return NULL; @@ -279,7 +282,15 @@ RetroCursor* RetroDb::sqlQuery(const std::string& tableName, const std::list(end_sql - start_sql).count(); + + RsDbg() << "DEBUG [DataService]: Batch SQL for group individual_query took " << sql_ms << "ms." << std::endl; + + return cursor; } bool RetroDb::isOpen() const { From 0c4440ec0fda622efe45801a2223d0eb720e4b32 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Sun, 18 Jan 2026 20:01:28 +0100 Subject: [PATCH 2/7] remove std::endl in RsDbg() calls --- src/gxs/rsdataservice.cc | 6 +++--- src/gxs/rsgenexchange.cc | 4 ++-- src/gxs/rsgxsnetservice.cc | 2 +- src/util/retrodb.cc | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gxs/rsdataservice.cc b/src/gxs/rsdataservice.cc index 0126de38f..bcf63b28a 100644 --- a/src/gxs/rsdataservice.cc +++ b/src/gxs/rsdataservice.cc @@ -1175,7 +1175,7 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, #endif // [TRACE] Start the database retrieval timer - RsDbg() << "DEBUG [DataService]: START retrieveNxsMsgs for " << reqIds.size() << " groups." << std::endl; + RsDbg() << "DEBUG [DataService]: START retrieveNxsMsgs for " << reqIds.size() << " groups"; auto start_all = std::chrono::steady_clock::now(); for(auto mit = reqIds.begin(); mit != reqIds.end(); ++mit) @@ -1232,7 +1232,7 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, auto end_group = std::chrono::steady_clock::now(); auto group_ms = std::chrono::duration_cast(end_group - start_group).count(); RsDbg() << "DEBUG [DataService]: Group " << grpId.toStdString() - << " (Total " << msgSet.size() << " msgs) processed in " << group_ms << "ms." << std::endl; + << " (Total " << msgSet.size() << " msgs) processed in " << group_ms << "ms"; msgSet.clear(); } @@ -1244,7 +1244,7 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, // [TRACE] Log total database time auto end_all = std::chrono::steady_clock::now(); auto total_ms = std::chrono::duration_cast(end_all - start_all).count(); - RsDbg() << "DEBUG [DataService]: END retrieveNxsMsgs total time: " << total_ms << "ms." << std::endl; + RsDbg() << "DEBUG [DataService]: END retrieveNxsMsgs total time: " << total_ms << "ms"; return 1; } diff --git a/src/gxs/rsgenexchange.cc b/src/gxs/rsgenexchange.cc index be1a8fe97..14ebebecd 100644 --- a/src/gxs/rsgenexchange.cc +++ b/src/gxs/rsgenexchange.cc @@ -1586,13 +1586,13 @@ bool RsGenExchange::getMsgData(uint32_t token, GxsMsgDataMap &msgItems) } } // [TRACE] Log the number of items processed - RsDbg() << "DEBUG [GenExch]: Deserialized " << count << " items." << std::endl; + RsDbg() << "DEBUG [GenExch]: Deserialized " << count << " items"; } // [TRACE] End timer and log total processing time auto end_time = std::chrono::steady_clock::now(); auto elapsed = std::chrono::duration_cast(end_time - start_time).count(); - RsDbg() << "DEBUG [GenExch]: getMsgData (Token: " << token << ") total time: " << elapsed << "ms." << std::endl; + RsDbg() << "DEBUG [GenExch]: getMsgData (Token: " << token << ") total time: " << elapsed << "ms"; return ok; } diff --git a/src/gxs/rsgxsnetservice.cc b/src/gxs/rsgxsnetservice.cc index bd0451419..141644343 100644 --- a/src/gxs/rsgxsnetservice.cc +++ b/src/gxs/rsgxsnetservice.cc @@ -3708,7 +3708,7 @@ void RsGxsNetService::locked_genSendMsgsTransaction(NxsTransaction* tr) // [TRACE] End global timer and log with the exact same format as V3 auto end_net = std::chrono::steady_clock::now(); auto net_ms = std::chrono::duration_cast(end_net - start_net).count(); - RsDbg() << "DEBUG [NetService]: TOTAL locked_genSendMsgsTransaction for " << tr->mItems.size() << " items took " << net_ms << "ms." << std::endl; + RsDbg() << "DEBUG [NetService]: TOTAL locked_genSendMsgsTransaction for " << tr->mItems.size() << " items took " << net_ms << "ms"; return; } diff --git a/src/util/retrodb.cc b/src/util/retrodb.cc index 70b1c772e..09acfd500 100644 --- a/src/util/retrodb.cc +++ b/src/util/retrodb.cc @@ -288,7 +288,7 @@ RetroCursor* RetroDb::sqlQuery(const std::string& tableName, const std::list(end_sql - start_sql).count(); - RsDbg() << "DEBUG [DataService]: Batch SQL for group individual_query took " << sql_ms << "ms." << std::endl; + RsDbg() << "DEBUG [DataService]: Batch SQL for group individual_query took " << sql_ms << "ms"; return cursor; } From 4f88dbe07a5fac7a6c9a76ccb09717f0c15b65be Mon Sep 17 00:00:00 2001 From: jolavillette Date: Mon, 19 Jan 2026 14:18:56 +0100 Subject: [PATCH 3/7] remove debug message in retrodb.cc --- src/util/retrodb.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/retrodb.cc b/src/util/retrodb.cc index 09acfd500..20fbb222c 100644 --- a/src/util/retrodb.cc +++ b/src/util/retrodb.cc @@ -288,7 +288,7 @@ RetroCursor* RetroDb::sqlQuery(const std::string& tableName, const std::list(end_sql - start_sql).count(); - RsDbg() << "DEBUG [DataService]: Batch SQL for group individual_query took " << sql_ms << "ms"; + //RsDbg() << "DEBUG [RetroDb]: Batch SQL for group individual_query took " << sql_ms << "ms"; return cursor; } From 8b781633c52c701714fb44a691d9a4e1380d119d Mon Sep 17 00:00:00 2001 From: jolavillette Date: Mon, 19 Jan 2026 14:28:15 +0100 Subject: [PATCH 4/7] Optimize getMsgData using OpenMP parallelization --- src/gxs/rsgenexchange.cc | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/gxs/rsgenexchange.cc b/src/gxs/rsgenexchange.cc index 14ebebecd..5d95390aa 100644 --- a/src/gxs/rsgenexchange.cc +++ b/src/gxs/rsgenexchange.cc @@ -1552,10 +1552,14 @@ bool RsGenExchange::getMsgData(uint32_t token, GxsMsgDataMap &msgItems) const RsGxsGroupId& grpId = mit->first; std::vector& gxsMsgItems = msgItems[grpId]; std::vector& nxsMsgsV = mit->second; - std::vector::iterator vit = nxsMsgsV.begin(); - for(; vit != nxsMsgsV.end(); ++vit) + + // Pre-allocate a temporary vector for results to avoid locking in the parallel loop + std::vector tempItems(nxsMsgsV.size(), nullptr); + + #pragma omp parallel for + for(size_t i = 0; i < nxsMsgsV.size(); ++i) { - RsNxsMsg*& msg = *vit; + RsNxsMsg* msg = nxsMsgsV[i]; RsItem* item = NULL; if(msg->msg.bin_len != 0) @@ -1563,26 +1567,34 @@ bool RsGenExchange::getMsgData(uint32_t token, GxsMsgDataMap &msgItems) if (item) { - RsGxsMsgItem* mItem = dynamic_cast(item); + // Use static_cast as we expect the serializer to return the correct type for this service + // dynamic_cast can be slower and we want speed here. + RsGxsMsgItem* mItem = static_cast(item); if (mItem) { - mItem->meta = *((*vit)->metaData); // get meta info from nxs msg - gxsMsgItems.push_back(mItem); - count++; + mItem->meta = *(msg->metaData); // get meta info from nxs msg + tempItems[i] = mItem; } else { - std::cerr << "RsGenExchange::getMsgData() deserialisation/dynamic_cast ERROR"; - std::cerr << std::endl; + // Should almost never happen if serializer is correct delete item; } } else { - std::cerr << "RsGenExchange::getMsgData() deserialisation ERROR"; - std::cerr << std::endl; + // Deserialization failed (corrupt data?) + // std::cerr << "RsGenExchange::getMsgData() deserialisation ERROR" << std::endl; + } + delete msg; + } + + // Serial merge of successful items + for(size_t i = 0; i < tempItems.size(); ++i) { + if(tempItems[i]) { + gxsMsgItems.push_back(tempItems[i]); + count++; } - delete msg; } } // [TRACE] Log the number of items processed From 62dd94dffbdae2fd4bcd4e1256a246dd171f4022 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Mon, 19 Jan 2026 15:01:45 +0100 Subject: [PATCH 5/7] Build: Enable OpenMP support in .pro file --- src/libretroshare.pro | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libretroshare.pro b/src/libretroshare.pro index 812c59385..92750cbd3 100644 --- a/src/libretroshare.pro +++ b/src/libretroshare.pro @@ -167,6 +167,8 @@ linux-* { CONFIG += link_pkgconfig QMAKE_CXXFLAGS *= -D_FILE_OFFSET_BITS=64 + QMAKE_CXXFLAGS += -fopenmp + LIBS += -fopenmp QMAKE_CC = $${QMAKE_CXX} no_sqlcipher { @@ -242,6 +244,8 @@ win32-x-g++ { ################################# Windows ########################################## win32-g++|win32-clang-g++ { + QMAKE_CXXFLAGS += -fopenmp + LIBS += -fopenmp QMAKE_CC = $${QMAKE_CXX} OBJECTS_DIR = temp/obj MOC_DIR = temp/moc From fb15521d38cd6286ef000f0076af2977ab0c1e18 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Mon, 19 Jan 2026 15:42:55 +0100 Subject: [PATCH 6/7] Build: Remove OpenMP flags from project file (moved to global pri) --- src/libretroshare.pro | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libretroshare.pro b/src/libretroshare.pro index 92750cbd3..812c59385 100644 --- a/src/libretroshare.pro +++ b/src/libretroshare.pro @@ -167,8 +167,6 @@ linux-* { CONFIG += link_pkgconfig QMAKE_CXXFLAGS *= -D_FILE_OFFSET_BITS=64 - QMAKE_CXXFLAGS += -fopenmp - LIBS += -fopenmp QMAKE_CC = $${QMAKE_CXX} no_sqlcipher { @@ -244,8 +242,6 @@ win32-x-g++ { ################################# Windows ########################################## win32-g++|win32-clang-g++ { - QMAKE_CXXFLAGS += -fopenmp - LIBS += -fopenmp QMAKE_CC = $${QMAKE_CXX} OBJECTS_DIR = temp/obj MOC_DIR = temp/moc From 7228e9d6354a681cc0c5f97983d09a00532e348d Mon Sep 17 00:00:00 2001 From: jolavillette Date: Wed, 28 Jan 2026 17:01:21 +0100 Subject: [PATCH 7/7] remove GXSPROFILING debug messages --- src/gxs/rsdataservice.cc | 16 +++++++++++++--- src/gxs/rsgenexchange.cc | 12 ++++++++++-- src/gxs/rsgxsnetservice.cc | 8 +++++++- src/util/retrodb.cc | 8 +++++++- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/gxs/rsdataservice.cc b/src/gxs/rsdataservice.cc index bcf63b28a..61fb07571 100644 --- a/src/gxs/rsdataservice.cc +++ b/src/gxs/rsdataservice.cc @@ -26,6 +26,8 @@ * #define RS_DATA_SERVICE_DEBUG_CACHE 1 ****/ +//#define GXSPROFILING + #include #include #include @@ -1174,16 +1176,20 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, int resultCount = 0; #endif +#ifdef GXSPROFILING // [TRACE] Start the database retrieval timer - RsDbg() << "DEBUG [DataService]: START retrieveNxsMsgs for " << reqIds.size() << " groups"; + RsDbg() << "GXSPROFILING [DataService]: START retrieveNxsMsgs for " << reqIds.size() << " groups"; auto start_all = std::chrono::steady_clock::now(); +#endif for(auto mit = reqIds.begin(); mit != reqIds.end(); ++mit) { const RsGxsGroupId& grpId = mit->first; +#ifdef GXSPROFILING // [TRACE] Start timer for this specific group auto start_group = std::chrono::steady_clock::now(); +#endif // if vector empty then request all messages const std::set& msgIdV = mit->second; @@ -1228,11 +1234,13 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, msg[grpId] = msgSet; +#ifdef GXSPROFILING // [TRACE] Log time per group to monitor progress auto end_group = std::chrono::steady_clock::now(); auto group_ms = std::chrono::duration_cast(end_group - start_group).count(); - RsDbg() << "DEBUG [DataService]: Group " << grpId.toStdString() + RsDbg() << "GXSPROFILING [DataService]: Group " << grpId.toStdString() << " (Total " << msgSet.size() << " msgs) processed in " << group_ms << "ms"; +#endif msgSet.clear(); } @@ -1241,10 +1249,12 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, std::cerr << "RsDataService::retrieveNxsMsgs() " << mDbName << ", Requests: " << reqIds.size() << ", Results: " << resultCount << ", Time: " << timer.duration() << std::endl; #endif +#ifdef GXSPROFILING // [TRACE] Log total database time auto end_all = std::chrono::steady_clock::now(); auto total_ms = std::chrono::duration_cast(end_all - start_all).count(); - RsDbg() << "DEBUG [DataService]: END retrieveNxsMsgs total time: " << total_ms << "ms"; + RsDbg() << "GXSPROFILING [DataService]: END retrieveNxsMsgs total time: " << total_ms << "ms"; +#endif return 1; } diff --git a/src/gxs/rsgenexchange.cc b/src/gxs/rsgenexchange.cc index 5d95390aa..139cd260a 100644 --- a/src/gxs/rsgenexchange.cc +++ b/src/gxs/rsgenexchange.cc @@ -73,6 +73,8 @@ static const uint32_t INTEGRITY_CHECK_PERIOD = 60*31; // 31 minutes * #define GEN_EXCH_DEBUG 1 */ +//#define GXSPROFILING + #if defined(GEN_EXCH_DEBUG) static const uint32_t service_to_print = RS_SERVICE_GXS_TYPE_FORUMS;// use this to allow to this service id only, or 0 for all services // warning. Numbers should be SERVICE IDS (see serialiser/rsserviceids.h. E.g. 0x0215 for forums) @@ -1537,8 +1539,10 @@ bool RsGenExchange::getGroupData(const uint32_t &token, std::vectorgetMsgData(token, msgResult); @@ -1598,13 +1602,17 @@ bool RsGenExchange::getMsgData(uint32_t token, GxsMsgDataMap &msgItems) } } // [TRACE] Log the number of items processed - RsDbg() << "DEBUG [GenExch]: Deserialized " << count << " items"; +#ifdef GXSPROFILING + RsDbg() << "GXSPROFILING [GenExch]: Deserialized " << count << " items"; +#endif } +#ifdef GXSPROFILING // [TRACE] End timer and log total processing time auto end_time = std::chrono::steady_clock::now(); auto elapsed = std::chrono::duration_cast(end_time - start_time).count(); - RsDbg() << "DEBUG [GenExch]: getMsgData (Token: " << token << ") total time: " << elapsed << "ms"; + RsDbg() << "GXSPROFILING [GenExch]: getMsgData (Token: " << token << ") total time: " << elapsed << "ms"; +#endif return ok; } diff --git a/src/gxs/rsgxsnetservice.cc b/src/gxs/rsgxsnetservice.cc index 141644343..c174cbac8 100644 --- a/src/gxs/rsgxsnetservice.cc +++ b/src/gxs/rsgxsnetservice.cc @@ -288,6 +288,8 @@ //#define NXS_FRAG +//#define GXSPROFILING + // The constant below have a direct influence on how fast forums/channels/posted/identity groups propagate and on the overloading of queues: // // Channels/forums will update at a rate of SYNC_PERIOD*MAX_REQLIST_SIZE/60 messages per minute. @@ -3515,8 +3517,10 @@ void RsGxsNetService::runVetting() void RsGxsNetService::locked_genSendMsgsTransaction(NxsTransaction* tr) { +#ifdef GXSPROFILING // [TRACE] Start global timer for the network transaction auto start_net = std::chrono::steady_clock::now(); +#endif #ifdef NXS_NET_DEBUG_0 GXSNETDEBUG_P_(tr->mTransaction->PeerId()) << "locked_genSendMsgsTransaction() Generating Msg data send fron TransN: " << tr->mTransaction->transactionNumber << std::endl; @@ -3705,10 +3709,12 @@ void RsGxsNetService::locked_genSendMsgsTransaction(NxsTransaction* tr) delete newTr; } +#ifdef GXSPROFILING // [TRACE] End global timer and log with the exact same format as V3 auto end_net = std::chrono::steady_clock::now(); auto net_ms = std::chrono::duration_cast(end_net - start_net).count(); - RsDbg() << "DEBUG [NetService]: TOTAL locked_genSendMsgsTransaction for " << tr->mItems.size() << " items took " << net_ms << "ms"; + RsDbg() << "GXSPROFILING [NetService]: TOTAL locked_genSendMsgsTransaction for " << tr->mItems.size() << " items took " << net_ms << "ms"; +#endif return; } diff --git a/src/util/retrodb.cc b/src/util/retrodb.cc index 20fbb222c..bd2ea560c 100644 --- a/src/util/retrodb.cc +++ b/src/util/retrodb.cc @@ -35,6 +35,8 @@ //#define RETRODB_DEBUG +//#define GXSPROFILING + const int RetroDb::OPEN_READONLY = SQLITE_OPEN_READONLY; const int RetroDb::OPEN_READWRITE = SQLITE_OPEN_READWRITE; const int RetroDb::OPEN_READWRITE_CREATE = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE; @@ -241,8 +243,10 @@ bool RetroDb::execSQL(const std::string &query){ RetroCursor* RetroDb::sqlQuery(const std::string& tableName, const std::list& columns, const std::string& selection, const std::string& orderBy){ +#ifdef GXSPROFILING // [TRACE] Start individual query timer auto start_sql = std::chrono::steady_clock::now(); +#endif if(tableName.empty() || columns.empty()){ std::cerr << "RetroDb::sqlQuery(): No table or columns given" << std::endl; @@ -284,11 +288,13 @@ RetroCursor* RetroDb::sqlQuery(const std::string& tableName, const std::list(end_sql - start_sql).count(); - //RsDbg() << "DEBUG [RetroDb]: Batch SQL for group individual_query took " << sql_ms << "ms"; + RsDbg() << "GXSPROFILING [RetroDb]: Batch SQL for group individual_query took " << sql_ms << "ms"; +#endif return cursor; }