What are the performance impacts of blocking a contact with 10,000 numbers in it?
My wife and I are getting a ridiculous amount of same-exchange spam calls (same area code and first three digits) and are looking for a solution. One promising solution is outlined in this apple discussion -- create a .vcf file to establish a contact containing all 10,000 numbers (-0000 ... -9999) in that exchange and then block that contact. A nuclear option so to speak.
I've read that having a contact with several hundred numbers in it can be slow to open, on the order of several seconds to open for one containing 200 contacts. But it isn't clear if "open" in that context refers to opening it in the Contacts app to view or loading it into memory to check when a call comes in.
We each have an iPhone 6 and just upgraded to iOS 11 via wipe and restore, and we haven't experienced much slowdown so far other than a slight (fractions of a second) degradation in response here and there.
What kinds of performance issues should we expect if we take this route?
Edit And specifically is there any danger of bricking our phones or otherwise crashing if we use this? There is some discussion in the above link of the contacts app no longer opening.
Another option is to create say 20 contacts each with 500 numbers, or 100 contacts each with 100 numbers, or something like that. But I don't know if there is a larger performance hit for breaking it up that way vs having them all in one.
Why the nuclear option? We moved away from that location ten years ago but kept the numbers for convenience, we do not receive any calls from so-called "neighbors" out there, and I would prefer not to use a call-blocking app due to privacy concerns, so this seems like a perfect solution. (second only to nuking the spammers from orbit)
Edit 2 I am currently experimenting with creating the contacts manually with 500 numbers per contact, for a total of 20 contacts. It only took a few minutes to generate and import four contacts with 2,000 numbers total once the spreadsheet was set up, and that included emailing the contacts to my phone and importing them there.
Solution I'm marking Matt's answer as the solution because he pointed me in the direction of the app WideProtect. I installed it a couple days ago and so far there have been no calls.
Initially I was avoiding installing an app due to privacy concerns, but after reading the CallKit API I was persuaded to give it a shot. The app does require access to your Contacts if you want to allow numbers from your contacts through the block (which seems opposite from what the CallKit API says...) but I got around that by blocking all ranges except the range my wife's number is in. For example, if my wife's number is 123-555-3859 I would block 123-555-0XXX, 123-555-1XXX, 123-555-2XXX, 123-555-4XXX, etc. Skipping 3XXX. That gives only a 10% chance scammers will pick the range that includes my wife's number, so that is an acceptable tradeoff to me AND it avoids giving WideProtect access to my contacts list. If it becomes unbearable I can block 123-555-30XX..123-555-37XX and 123-555-39XX giving only a 1% chance they randomly pick the range. So that works great for me and preserves privacy.
Many thanks to Matt for pointing me down that path. This looks like a great solution.
Solution 1:
There's no impact in performance. TrueCaller uses CallKit, the iOS provided method of blocking spam calls, and behind the scenes they are all loaded into one contact.
The only issue would be if you wanted to manage that contact manually rather than using an app that is designed to do it. Swiping to delete hundreds of contacts is a pain!
Anyway, there's an app called WideProtect that uses the CallKit to do the blocking and will let you set ranges of numbers to block.
Solution 2:
I can report no impact to performance at a far lower limit - my contact named "Telemarket Spam" to which I add callers and block that one contact is around 125 phones deep.
I would add all the numbers to one contact to simplify your life until you notice an issue or a problem and then back off a bit, and iterate to multiple contacts.
At some point, if the annoyance of curating this list overcomes my hesitance to subscribe to a service that integrates with the iOS phone app to classify and attempt to block suspect and known bad actors, I'll probably pay for a service to block calls. So far, I can't measure any slowdown or freeze - but I could see potential issues if you do manage to have thousands of numbers in the same contact.
Sorry this isn't super rigorous, but this one might be fairly easy to test empirically by generating a contact with 5,000 numbers and seeing when it breaks when you have time and a backup to restore your iOS device.
If I needed to profile this, I could use Instruments to attach to the contacts app and see where the contact is stored on the filesystem (for iOS or macOS) so there's clearly a way to reverse engineer how much space a number takes to store and measure any CPU usage related to editing that file or processing that data. Unless you see memory and CPU spiking, you can probably safely assume that as long as you care to keep adding numbers, the system will respond well if you just look at overall speed of the device while editing that contact.