NSMutableSet объединяет набор производительности / реализации
Мне интересно, как объединение множества реализовано в экземпляре NSMutableSet. У меня есть два больших набора, которые нужно часто объединять, и мне интересно, должен ли я реализовать свой собственный способ объединения двух наборов или путь Apple достаточно быстр.
2 ответа
Производительность NSMutableSet
сильно зависит от реализации -hash
а также -isEqual
по объектам в наборе. Я не думаю, что вы добьетесь повышения производительности, внедрив его самостоятельно. Тем не менее, вы можете попробовать это, а затем профилировать свой код, чтобы увидеть, если он "слишком медленно".
Я бы поспорил, что версии Apple сильно оптимизированы. Почему бы просто не запустить Instruments и посмотреть, есть ли проблемы с производительностью?
Для исходного кода CFSet см.: opensource.apple.com
static Boolean __CFSetEqual(CFTypeRef cf1, CFTypeRef cf2) {
return __CFBasicHashEqual((CFBasicHashRef)cf1, (CFBasicHashRef)cf2);
}
static CFHashCode __CFSetHash(CFTypeRef cf) {
return __CFBasicHashHash((CFBasicHashRef)cf);
}