Do not lock the database while retrieving all the track features

This commit is contained in:
emeric
2019-03-10 14:13:59 +01:00
parent 99d592a71e
commit e609b239f3
6 changed files with 58 additions and 32 deletions
+17 -5
View File
@@ -100,16 +100,20 @@ int main(int argc, char *argv[])
std::cout << "Getting all features..." << std::endl;
Wt::Dbo::Transaction transaction(db.getSession());
auto tracks = Database::Track::getAllWithFeatures(db.getSession(), nbTracks);
std::vector<Database::IdType> trackIds {Database::Track::getAllIdsWithFeatures(db.getSession(), nbTracks)};
nbTracks = tracks.size();
nbTracks = trackIds.size();
std::cout << "Getting features DONE (" << nbTracks << " tracks)" << std::endl;
std::cout << "Reading features..." << std::endl;
std::vector<SOM::InputVector> tracksFeatures;
for (const auto& track : tracks)
for (Database::IdType trackId : trackIds)
{
Database::Track::pointer track {Database::Track::getById(db.getSession(), trackId)};
if (!track)
continue;
SOM::InputVector features {nbDims};
if (!getTrackFeatures(db.getSession(), track, featuresSettings, features))
continue;
@@ -163,8 +167,12 @@ int main(int argc, char *argv[])
std::cout << "Classifying tracks..." << std::endl;
SOM::Matrix< std::vector<Database::Track::pointer> > tracksMap(width, height);
for (auto track : tracks)
for (Database::IdType trackId : trackIds)
{
Database::Track::pointer track {Database::Track::getById(db.getSession(), trackId)};
if (!track)
continue;
SOM::InputVector features {nbDims};
if (!getTrackFeatures(db.getSession(), track, featuresSettings, features))
continue;
@@ -194,8 +202,12 @@ int main(int argc, char *argv[])
}
// For each track, get the nearest tracks
for (const auto& track : tracks)
for (Database::IdType trackId : trackIds)
{
Database::Track::pointer track {Database::Track::getById(db.getSession(), trackId)};
if (!track)
continue;
SOM::InputVector features {nbDims};
if (!getTrackFeatures(db.getSession(), track, featuresSettings, features))
continue;