Black signs get always rendered, no matter what, while colored signs stop getting re-rendered after a certain distance. This causes black signs to cause significantly more lag than colored signs. It is especially noticeable when using glow signs, which are more laggy than ordinary signs (see MC-226966). Bug about general sign lag is MC-5169
The shouldRender code in SignBlockEntityRenderer.java with yarn:
private static boolean shouldRender(SignBlockEntity sign, int signColor) { if (signColor == DyeColor.BLACK.getSignColor()) { return true; } else { MinecraftClient minecraftClient = MinecraftClient.getInstance(); ClientPlayerEntity clientPlayerEntity = minecraftClient.player; if (clientPlayerEntity != null && minecraftClient.options.getPerspective().isFirstPerson() && clientPlayerEntity.isUsingSpyglass()) { return true; } else { Entity entity = minecraftClient.getCameraEntity(); return entity != null && entity.squaredDistanceTo(Vec3d.ofCenter(sign.getPos())) < (double)RENDER_DISTANCE; } } }