Strict and superstrict are the same apart from strict assumes any variables you have not specified the type of are int. Superstrict requires you to specifiy the type of all variables, even if they are int. The performance between the two is the same - the difference is only cosmetic. (If all but one type of variable are specified, the compiler can safely assume what an unspecified variable is).
Not using strict the compiler can only guess what variable type you are using and because you do not need to declare the variables, it doesn't know where they belong. For example, a variable declared inside an if block using strict does not exist after the endif (try it, on strict) and allows the compiler to make all kinds of wonderful optimizations. For example registers are stored in super-quick memory inside the processor cache, but if the compiler doesn't know where each variable "belongs" it cannot smartly decide which belong in the registers.
Not using strict the compiler can only guess what variable type you are using and because you do not need to declare the variables, it doesn't know where they belong. For example, a variable declared inside an if block using strict does not exist after the endif (try it, on strict) and allows the compiler to make all kinds of wonderful optimizations. For example registers are stored in super-quick memory inside the processor cache, but if the compiler doesn't know where each variable "belongs" it cannot smartly decide which belong in the registers.