When a player gets benched, it does not necessarily mean that they player behind him, out performed him. It means that the player who's being benched, did not perform at a starter level in the games. This is not just regarding QB's or even football, for that matter. This principle is applicable to all team sports.
Ever heard of the phrase, "we beat ourselves?" There will always be scenarios in which teams will lose games that they are suppose to win, and players are going to lose their positions on the depth charts due to their own poor performance, rather than the performances from opposing team's or in the case of a position battle, the other player.
We have to move on from Malik, not because Perry, Weldon, or Williams have outperformed him in games, but because Rosier has not proved himself worthy of being a starter. The other QB's can't have the chance to outperform him in games, if they only play against garbage teams.
Malik deserves to be benched. His performance proves that fact. The other QB's off the field issues or greentree performance should not factor into the matter.