mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-29 12:20:24 -07:00
[Card Database] Improve loading times through binary cache (#7051)
* [Card Database] Improve loading times through binary cache Took 10 minutes Took 9 minutes Took 16 seconds * [Card Database] Remove lib qt include Took 18 minutes Took 14 seconds * Downgrade to 6.3 datastream Took 5 minutes * go up to 6.4 datastream Took 1 minute * Address comments * Small bug fixes Took 20 minutes Took 10 seconds * More fixes. Took 4 minutes Took 4 seconds * Even more fixes. Took 11 minutes Took 4 seconds * More fixes. Took 6 minutes Took 26 seconds Took 8 minutes * Namespace instead of class Took 6 minutes --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
4bb8831531
commit
749223c2dc
31 changed files with 1604 additions and 106 deletions
|
|
@ -2,19 +2,56 @@
|
|||
|
||||
#include "../set/card_set.h"
|
||||
|
||||
#include <QDataStream>
|
||||
#include <QIODevice>
|
||||
|
||||
PrintingInfo::PrintingInfo(const CardSetPtr &_set) : set(_set)
|
||||
{
|
||||
}
|
||||
|
||||
void PrintingInfo::ensurePropertiesLoaded() const
|
||||
{
|
||||
QMutexLocker lock(propertiesMutex.data());
|
||||
if (propertiesLoaded) {
|
||||
return;
|
||||
}
|
||||
propertiesCache.clear();
|
||||
if (!propertiesBlob.isEmpty()) {
|
||||
QDataStream in(propertiesBlob);
|
||||
in.setVersion(QDataStream::Qt_6_4);
|
||||
in >> propertiesCache;
|
||||
}
|
||||
propertiesLoaded = true;
|
||||
}
|
||||
|
||||
void PrintingInfo::setProperty(const QString &_name, const QString &_value)
|
||||
{
|
||||
ensurePropertiesLoaded();
|
||||
if (propertiesCache.value(_name).toString() == _value) {
|
||||
return;
|
||||
}
|
||||
propertiesCache.insert(_name, _value);
|
||||
setProperties(propertiesCache);
|
||||
}
|
||||
|
||||
void PrintingInfo::setProperties(const QVariantHash &_props)
|
||||
{
|
||||
ensurePropertiesLoaded();
|
||||
propertiesCache = _props;
|
||||
QDataStream out(&propertiesBlob, QIODevice::WriteOnly);
|
||||
out.setVersion(QDataStream::Qt_6_4);
|
||||
out << propertiesCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the uuid property of the printing, or an empty string if the property isn't present
|
||||
*/
|
||||
QString PrintingInfo::getUuid() const
|
||||
{
|
||||
return properties.value("uuid").toString();
|
||||
return getPropertiesHash().value("uuid").toString();
|
||||
}
|
||||
|
||||
QString PrintingInfo::getFlavorName() const
|
||||
{
|
||||
return properties.value("flavorName").toString();
|
||||
return getPropertiesHash().value("flavorName").toString();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue