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);
}
Другие вопросы по тегам