-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mp] use hash from state in dfs #206
Conversation
crates/dslab-mp/src/mc/system.rs
Outdated
for event in self.events.iter() { | ||
let mut h = DefaultHasher::default(); | ||
event.hash(&mut h); | ||
hash_events ^= h.finish(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Немного здесь порассуждаю. Нам нужно сделать так, чтобы хэш не зависел от порядка событий в events. Сейчас это сделано с помощью XOR (есть еще подход с суммированием, но непонятно какой из них лучше). У такой реализации есть недостаток, что надо создавать hasher на каждый элемент, что может добавлять заметный оверхед для небольших событий типа таймеров.
Альтернативный подход - хранить события изначально в некотором фиксированном порядке. Тогда можно было бы пользоваться готовой реализацией Hash, без такого оверхеда. Но здесь есть проблема с выбором подходящей структуры данных. BTreeSet не подходит, потому что теоретически у нас может быть несколько полностью совпадающих событий (идентичных сообщений между парой процессов или таймеров с одинаковым именем у одного процесса). И надо еще чтобы эта структура была удобна для работы с ней в стратегии, где надо извлекать произвольные события.
Посколько мы хотим в ближайшее время заменить events на Dependency Resolver, то предлагаю пока оставить вычисление хэша как есть. А после миграции на Resolver еще раз посмотреть, можно ли будет перейти на альтернативный подход.
c17e6f2
to
adc7bc2
Compare
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
Co-authored-by: Konstantin Amelichev <kostya.amelichev@gmail.com>
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
Co-authored-by: Oleg Sukhoroslov <oleg.sukhoroslov@gmail.com>
b790bdc
to
20f6e0f
Compare
less hashing
3c81f6d
to
6ba6b1d
Compare
No description provided.