Привет. Есть некоторые объекты , наследники от QObject, состояния которых приходит по сети в json (хотя не суть важно).
У объектов есть свойства, некоторые булевые, некоторые целочисленные, перечисления, float и строковые. Ну например
class StateObject : public QObject {
Q_PROPERTY (bool prop1 ...)
Q_PROPERTY (bool prop2 ...)
Q_PROPERTY (int prop3 ...)
Q_PROPERTY (float prop4 ...)
Q_PROPERTY (QString prop5 ...)
Q_PROPERTY (some_enum prop6 ...)
...
}
Состояние этого объекта обновляется несколько раз в секунду на основании данных с сети, парсится json, и обновляются свойства объекта, после чего его свойства уже читаются другими объектами.
Так вот, у меня 4 сетевых канала данных, по которым приходят состояния этого объекта. Иногда наблюдается рассинхронизация данных, например prop1 по одному каналу false, по остальным трем true.
Мне нужно проверять каждую секунду синхронность состояний StateObject. На каждое сетевое подключение свой экземпляр StateObject.
Таких объектов на самом деле много (тысячи). Но не все меняют свое состояние часто, одни периодически, одни асинхронно по событиям извне.
Так вот, сейчас синхронность проверяется тупым перебором свойств и сравниванием их значений. Я подумал, может есть более элегантное решение, например для каждого StateObject вычислять хеш его состояния на основании его свойств при каждом изменении, а дальше просто сравнивать их хеши. Нужно подобрать оптимальный вариант в плане производительности. Полагаю тупой перебор свойств у четырех экземпляров StateObject и сравнение QVariant не самое оптимальное решение.