def _compare_ioc_properties(old, new):
    """
    Compares the properties of IOCs in a component/configuration.

    Args:
        old: The component or configuration to use as a baseline when comparing IOCs
        new: The corresponding new configuration or component

    Returns:
        set, set : IOCs to start, IOCs to restart
    """
    iocs_to_start = set()
    iocs_to_restart = set()

    _attributes = ["macros", "pvs", "pvsets", "simlevel", "restart"]

    for ioc_name in new.iocs.keys():
        if ioc_name not in old.iocs.keys():
            # If not in previously then add it to start
            iocs_to_start.add(ioc_name)
        elif any(getattr(old.iocs[ioc_name], attr) != getattr(new.iocs[ioc_name], attr) for attr in _attributes):
            # If any attributes have changed, restart the IOC
            iocs_to_restart.add(ioc_name)

    return iocs_to_start, iocs_to_restart