fixed half float performance on iOS?

It’s advised to use as small as feasible variable formats in shaders - however, during my few months developping with unity on iOS I noted quite consistently that framerate becomes better (up to 20%) when switching fixed and halfs for floats. Now I use only float in my shaders.

I’m curious if someone experienced similar behaviour and has an explanation for it?

On mobile platforms, the key is to ensure as much as possible stays in low precision in the fragment shader. On most mobile GPUs, applying swizzles to low precision (fixed/lowp) types is costly; converting between fixed/lowp and higher precision types is quite costly as well.

fixed4 uniform;
...half4 result = pow (l, 2.2) + uniform; // BAD: fixed -> half conversion 

struct Input {
    float4 color : TEXCOORD0;
fixed4 frag (Input IN) : COLOR
    return IN.color; // BAD: float -> fixed conversion

half4 tex = tex2d (textureRGBA8bit, uv); // OK: conversion for free (page.25)