Witajcie,
Będę pisał w niedalekiej przyszłości nowy menadżer zasobów bo taki szit co napisałem jak mniej umiałem to szkoda gadać. Zasoby będą odszukiwane przez ścieżkę do pliku. Jeśli użyłbym QMap to wyszukiwanie nie będzie znów tak wolne, ale porównywanie stringów które średnio będą miały 64 znaki czy coś koło tego jest jednak wolniejsze niż porównanie long long int
, można szybciej więc myślałem o QHash. Znów nurtuje mnie to, że ścieżki są dosyć długie i jest ryzyko, że kilka ścieżek/dwie będą miały tego samego hasha. Z dokumentacji wiem, że QHash jeśli są takie same hashe to nadpisuje ostatnio dodany albo w przypadku odczytu zwraca iterator na początek "rekordów" z tymi samymi hashami i możemy sobie iterować. Więc wyjściem będzie trzymanie niehashowanego klucza, żeby z tych o takim samym hashu znaleźć ten którego szukamy. I czemu w doc Qt pisze, że QHash ma nieposortowane dane? Więc jak może tak szybko wyszukiwać? Jeśli częste będą sytuacje gdzie różne klucze mają ten sam hash to czy nie lepiej będzie po prostu użycie QMap? Niby na 1 milion rekordów trzeba zrobić 20 "strzałów" w wyszukiwaniu binarnym. Nie wydaje się tak dużo w skali jednego wyszukiwania, ale jeśli GejmEndżin będzie szukał takiego samego zasobu przy dodawaniu nowego, żeby nie wczytywać jednego dwa razy to troche liczenia jest.